Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python web抓取暂停_Python_Beautifulsoup_Mechanize - Fatal编程技术网

Python web抓取暂停

Python web抓取暂停,python,beautifulsoup,mechanize,Python,Beautifulsoup,Mechanize,我有以下代码: #!/usr/bin/env python from mechanize import Browser from BeautifulSoup import BeautifulSoup mech = Browser() mech.set_handle_robots(False) url = "http://storage.googleapis.com/patents/retro/2011/ad20111231-02.zip" page = mech.open(url) html

我有以下代码:

#!/usr/bin/env python
from mechanize import Browser
from BeautifulSoup import BeautifulSoup

mech = Browser()
mech.set_handle_robots(False)
url = "http://storage.googleapis.com/patents/retro/2011/ad20111231-02.zip"
page = mech.open(url)
html = page.read()

soup = BeautifulSoup(html)
print soup.prettify()

尝试从网页下载.zip文件的非常简单的web scraper。当我运行这段代码时,请记住这个文件是4kb的,程序并没有完成,就好像它在一个无限的while循环中一样。我在这里做了什么?

在完成
页面后,请尝试放置
打印html
。read()
。你可能没有得到你认为你是,这听起来像是你收到了一个错误页面,而不是文件本身。我不确定您是否正确处理了该文件,您可能会在此处找到更好的方法:

顺便说一句,zip文件不是4KB,它大约是87MB,包含一个784MB的XML文件,您可以通过在浏览器中点击该URL并下载来确认。这可能不是一个无限循环,这是问题所在,只是加载需要很长时间


当数据是zip存档的XML时,您还试图以HTML的形式传递数据。如果(一旦您实际拥有该文件)将响应数据存储在
StringIO
中,您将能够在内存中解压()。然后,您需要确认您正在传递XML

soup = BeautifulSoup(html, 'xml')
这需要您这样做,但这将对您有利,因为它可能是Python下最快的XML解析器

最后一件事:

mech.set_handle_robots(False)
url = "http://storage.googleapis.com/patents/retro/2011/ad20111231-02.zip"

我的印象是谷歌设置了他们的
robots.txt
,尽可能不允许刮擦。如果您仍然无法下载该文件的副本,我建议您尝试
Selenium
;它很像
mechanize
,但控制着实际的浏览器,比如Chrome和Firefox,因此它将是一个合法的浏览器请求。

您等待它完成多久了?我刚刚尝试了
timeit
python-mtimeit-n1-r1-s“import requests”r=requests.get()http://storage.googleapis.com/patents/retro/2011/ad20111231-02.zip)。内容“
),耗时113秒。你至少等了那么久吗?“当数据是XML时,你也在尝试以HTML的形式传递数据”-他似乎没有先解压,所以他实际上在尝试解析zip文件,这可能没有帮助。