【发布时间】:2012-05-19 13:36:51
【问题描述】:
我正在获取和解析中大量的网页。我注意到我的脚本以 Python 会话重新启动而自发结束。到目前为止,似乎只有当我尝试从 nasa.gov 页面制作汤时才会发生这种情况。即:
import urllib2
from bs4 import BeautifulSoup
page=urllib2.urlopen('http://www.nasa.gov')
soup=BeautifulSoup(page)
=====================================RESTART=======================================
有谁知道为什么会发生这种情况以及我是否可以避免这种情况?它不会抛出异常或任何东西,会话只是重新启动。这发生在两台不同的机器上,但如果其他人无法重现它我会很感兴趣(我使用的是 Python 2.7.2 - Enthought Distribution)
编辑/更新:
我刚刚尝试用lxml 代替BeautifulSoup,但它会导致同样的自发重启。即
from lxml import html
page=html.parse('http://www.nasa.gov')
============================== RESTART =================================
一旦 Python 打开并尝试解析页面,会话就会重新启动。有趣的是,读取页面并将其打印到控制台可以正常工作。
【问题讨论】:
-
我认为您需要先在套接字上运行 .read(),提取字符串,然后在字符串上运行 BeautifulSoup。
-
感谢您的建议。不幸的是,添加 .read() 并没有帮助。上面的代码完美适用于我使用过的数百个其他网站。这个站点由于某种原因导致会话重新启动。
-
我只是想补充一点,我在 Windows 机器上看到了同样的东西,但在带有 Linux (Debian) 的 VPS 上,相同的代码和相同的输入可以正常工作,无需打嗝。现在大家都欢呼 Linux。
标签: python html screen-scraping beautifulsoup lxml