1

我正在尝试使用 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 代码?如果是这样,我怎样才能避免下载这些东西,一般来说如何避免带有请求的下载,因为有时我的程序可能会在下载页面上结束。

非常感谢!

4

1 回答 1

0

问题可能是网站的加载时间过长,或者是您的网站链接图中的循环 - 即 page1(主页)链接到 page2(服务条款),而 page2(服务条款)又链接到 page1。您可以尝试使用此代码段来查看从网站获得响应所需的时间(包括代码段的使用)。

关于你的最后一个问题:

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

于 2013-07-30T21:27:04.863 回答