网络连接与获取页面-操作符
你好,
为了测试,我在excel表中创建了9个URL列表。
现在我试着测试下面的过程
读取Excel >获取页面>数据到文档>进一步处理…
当我在读取Excel后设置断点时,我得到了9个url的示例集。
当我尝试Get Pages时,结果是一个错误,显示“无法连接到指定的URL”。请检查您的网络连接。”
以下是我的流程:
<?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.5.003”>
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文
<过程扩展= " true " >. .
<列出关键= "注释" / >
<列出关键= " data_set_meta_data_information " >
/> .. . x64) . .
< /操作符>
<列出关键= " specify_weights " / >
< /操作符>
<过程扩展= " true " >
< /操作符>. .
> < /过程
< /操作符>
/> .. .
> < /过程
< /操作符>
> < /过程
我的网络连接很好。我用爬行网络操作符进行了测试,这工作得很好。
我已经改变了连接超时和读超时参数,但没有效果。
你知道这个错误的原因是什么吗?
谢谢
矿业公司
0
最佳答案
-
lionelderkrikor 主持人,RapidMiner认证分析师,会员职位:1195年
独角兽
看来网址必须从这里开始http://或https://而不是和www。
我做的测试www.google.fr我的确和你犯了同样的错误,
另一方面https://www.google.fr/,没有发生错误.
我的流程:
<?xml version="1.0" encoding="UTF-8"?> <过程version = " 8.0.001”>
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文
<过程扩展= " true " >.
<列出关键= "注释" >
< / >列表
<列出关键= " data_set_meta_data_information " >
/> .
< /操作符>
<列出关键= " specify_weights " / >
< /操作符>
< /操作符>
/> .. .
> < /过程
< /操作符>
> < /过程问候,
莱昂内尔
1
答案
嗨,莱昂内尔,
事情竟然如此简单——谢谢。
Google.fr在excel(应该是http://google.fr在普通浏览器中)也不能工作-我测试了,所以get页面操作符需要一个有效的get -statement。
另一个问题:有些响应码是200 = OK,但有些发送301 =永久移动。
我把我自己的网站进行测试,这是永久地从http://到https://
所以我尝试了一个if语句的变通方法:
if (Response_Code == (301),
http:“如果(开始(),替换(“http:”,“https:”),
)
)
但是现在RM说:不可接受的输入在")"
我有两个参数而不是三个,因为当时的行动将是不行动。
你知道RM中if语句中无动作的占位符吗,这样我就可以:
如果Response_Code==301,将http替换为https,否则什么都不做。
谢谢
矿业公司
你好,再一次@miner,
试试这两种可能的解决方案:
——如果(开始(A,“http:”),替换(“http:”,“https:”)," ")
或
——如果(开始(A,“http:”),替换(“http:”,“https:”),替换(“https:”,“https: "))
我希望这对你们有帮助
问候,
莱昂内尔
你好,再一次@miner,
我之前话题的第一个解决方案很愚蠢
也许第二种方法起作用了
但你可以尝试这个更合乎逻辑的解决方案:
http:“如果(开始(),替换(“http:”,“https:”),一个)
问候,
莱昂内尔
没有检查你的过程@lionelderkrikor,您可以考虑使用处理异常操作符。因此,如果http://不工作,您可以尝试https://
嗨@Thomas_Ott,
我不认识这个运算符。处理异常).
我做了记录。我确实认为它会有用。
我测试了很多组合(循环边尝试/循环边捕捉…)
总之,我无法在这个特殊的案例研究中得出预期的结论(“https”到所有的例子集)。
我确定我错过/忘记了一些东西,所以你能详细说明它在这个特殊案例研究或等效案例研究中的工作情况吗:
对于我的DataScience和Rapidminer文化,您可以提供一个带有此操作符的进程吗(我提供了一个excel文件的链接):
https://drive.google.com/open?id=1GGP_J5VUdBje0jlquu5I_21Dk1s_KXAg
谢谢你,托马斯,给我一点时间,
最好的问候,
莱昂内尔
你好再次,
@lionelderkrikor谢谢你的建议。
我尝试了你的if-statement,但孤立的语句只是将每条记录的http更改为https。这导致了同样的问题,反过来,这是一个错误的GET https网站上只有http。
因此,我只需要为抛出301的记录添加新属性。
我又试了一次:
if (("Response-Code") == (301),
http:“如果(开始(),替换(“http:”,“https:”),一个)
”、“)
将所有记录的新属性保留为空。
所以我对一个过程也很感兴趣@Thomas_Ott使用处理异常——操作符。
让它变得更复杂一点:我遇到了四种不同的url符号:
http://abc.com
https://abc.com
http://www.abc.com
https://www.abc.com
这个'4-peace-exception'是Handle异常操作符能够管理的吗?
谢谢
矿业公司
@lionelderkrikor我在考虑这样的设置:
首先“尝试”http:\\进程集。如果失败了(比如。'catch'),您可以再次执行相同的过程,但使用https:\\。如果基本url都是相同的,即google.fr,那么你可以使用宏你可以提取各种搜索条件的列表(search?q =数据+科学,搜索?Q =rapidminer,等),循环通过它。
@miner就像我上面写的,你可以创建一个abc.com和www.abc.com,然后在处理异常中循环它们,在Try端有http://,在Catch端有https://。异常处理操作符是一种非常棒的生产类型操作符。
嗨@Thomas_Ott
我试过你的方法处理异常——操作符。
在里面我运行获取页面-使用http://和捕获的操作符https://.
但是结果表给了我响应代码200和301的http://
我怎样才能训练操作员认为301是假的呢?
似乎,获取页面将服务器301的响应作为常规响应,并将其作为属性放入示例集中。
我要用什么额外的运算符来得到200个好的结果和301个错误的结果?
谢谢
矿业公司
你好,
首先确保你检查了Get Pages操作符中的参数“follow redirects”。通常这应该跟随重定向临时或永久移动…
如果这行不通,你可以简单地这样做:
1.尝试所有前面有http://的url
2.将结果拆分为正确返回的示例(代码200)和其他示例。您可以为此使用Filter Examples操作符。
3.将http://替换为https://后重试
4.再次分裂,如步骤2。
5.添加www。在域名前面。再试一次
...
最后,使用append操作符附加所有正确加载的页面。如果返回的数据集的属性是不同的,超级集操作符或一个超级集(高级)从手提钻扩展将帮助您。
希望这能有所帮助。
问候,
塞巴斯蒂安。
嗨@land
这基本上是我尝试的第一件事,但后来我遇到了“网络连接”的问题
看来我需要使用处理异常——操作符。
但我被困在使用这个,因为我似乎没有完全抓住的概念处理异常。
基本上,我认为它应该像你在操作员中建议的那样工作,但我无法正确地完成它。
这是我目前的尝试:
但是这样我就得到了" duplicate attribute "的警告
也许有人能帮我深入研究一下处理异常...
干杯
矿业公司
嗨@land
这是我尝试的第一种方法,但后来我遇到了网络连接的问题
因此,似乎我必须使用处理异常操作符。
但我被困在尝试这个,因为似乎我没有抓住异常处理的概念。
我觉得应该像你说的那样在运算符,但那不起作用。
这是我目前的尝试:
但是这会导致' duplicate attribute'的错误信息
所以也许有人能帮我,深入了解句柄表达式....
干杯
矿业公司