链接刮取请求,bs4。获得警告:无响应的脚本

时间:2013-07-30 18:28:38

标签: python web-scraping beautifulsoup python-requests komodo

我尝试使用Python3.3中的请求,Beautifulsoup4和SoupStrainer从网页收集所有链接。使用Komodo Edit 8.0编写我的代码,并让我的脚本在Komodo Edit中运行。到目前为止一切正常,但在一些网页上,我发现了一个带有以下警告的弹出窗口

Warning unresponsive script

A script on this page may be busy, or it may have stopped responding. You can stop the script
now, or you can continue to see if the script will complete.

Script: viewbufferbase:797

然后我可以选择是否要继续或停止脚本。

这里有一些代码片段:

try:
    r = requests.get(adress, headers=headers)
    soup = BeautifulSoup(r.text, parse_only=SoupStrainer('a', href=True))
    for link in soup.find_all('a'):

        #some code

except requests.exceptions.RequestException as e:
    print(e)

我的问题是导致此错误的原因。是我的python脚本在网页上花了太长时间,还是网页上的脚本我刮?我不能想到后者,因为从技术上讲,我没有在页面上执行脚本吗? 或者它可能是我糟糕的互联网连接?

哦,还有一个小问题,上面的代码片段我是下载图片还是只是普通的html代码?因为有时当我查看我的连接状态时,它的方式太多了,我只是为了请求普通的html代码而接收的数据? 如果是这样,我怎么能避免下载这些东西,一般来说如何避免下载请求,因为有时可能是我的程序在下载页面结束。

非常感谢!

1 个答案:

答案 0 :(得分:0)

问题可能是网站的加载时间过长,也可能是网站链接图表中的一个周期 - 例如,page1(主页面)链接到第2页(服务条款),后者又链接到第1页。您可以尝试this snippet查看从网站获取回复所需的时间(包括代码段)。

关于你的上一个问题:

我很确定requests不会解析您的回复内容(.json()方法除外)。您可能遇到的是指向资源的链接,例如您脚本将访问的<a href="http://www.example.com/very_big_file.exe">Free Cookies!</a>requests有机制来处理此类案件,请参阅this以供参考。此外,上述技术允许检查Content-Type标题以确保您正在下载您感兴趣的页面。