【问题标题】:Link Scraping with requests, bs4. Getting Warning: unresponsive script使用请求进行链接抓取,bs4。收到警告:无响应的脚本
【发布时间】:2013-07-30 18:28:38
【问题描述】:

我正在尝试使用 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

然后我可以选择是继续还是停止脚本。

这里有一点代码sn-p:

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 脚本在网页上花费的时间太长,还是网页上的脚本我正在抓取?我想不出后者,因为从技术上讲,我没有执行页面上的脚本,对吗? 或者可能是我的互联网连接不好?

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

非常感谢!

【问题讨论】:

  • 您是否比网站图表中的第一级更深入?
  • 技术上我一次只检查一页。如果一个页面完成,它会继续检查另一个找到的链接。
  • 我的意思是,如果您在访问每个站点的过程中是否收集它们的链接并稍后处理它们,以便您越来越深入?
  • 哦,是的,我就是这么做的。我有一个仅以一个链接开头的列表,然后它将所有找到的链接添加到列表中。当然只是内部的。
  • 问题可能是网站的加载时间过长,或者您的网站链接图表中存在循环 - 即 page1(主页)链接到 page2(服务条款),而 page2(服务条款)又链接到第 1 页。您可以尝试this snippet 来查看从网站获得响应需要多长时间(包括使用 sn-p)。

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


【解决方案1】:

问题可能是网站的加载时间过长,或者您的网站链接图中存在一个循环 - 即第 1 页(主页)链接到第 2 页(服务条款),而第 2 页(服务条款)又链接到第 1 页。您可以尝试this snippet 来查看从网站获得响应需要多长时间(包括使用 sn-p)。

关于你的最后一个问题:

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

【讨论】:

    猜你喜欢
    • 2019-03-12
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多