【发布时间】:2014-09-20 07:40:23
【问题描述】:
我的程序运行了好几天,但昨天在这个异常被捕获后:
<urlopen error [Errno 111] Connection refused>
现在每次我尝试运行我的代码时都会收到此错误:
AttributeError: 'NoneType' object has no attribute 'get_text'
这是此错误的来源:
t = soup.find("h1", class_="title").get_text()
我不认为问题出在我的代码上,因为它运行了好几天。有没有重启python的按钮:p(开玩笑)
我应该提到,当我在本地机器上运行我的代码时,一切都很好,但在服务器上我不断收到 AttributeError
编辑:
- 当我打印 soup.body 时,结果是 None
- 当我打印 soup.title 时,我得到了页面的实际标题
- html 是正确的
【问题讨论】:
-
可能您的目标页面的 HTML 已更改,
<h1 class="title">不再存在... -
@MattDMo 不,我已经检查过了,还是一样
-
class之后应该有一个下划线_吗? -
另外,我知道你在开玩笑,但是如果你正在抓取的目标被存档在 Wayback Machine 上,你实际上可以通过指向存档来“过去”运行你的代码从上周开始。当然,如果您要获取最新数据,那将无济于事。在这种情况下,您需要弄清楚如何解析他们的最新页面。
-
@RachidO.: 大概是因为顶层元素没有名为
body的直接子标签(或者它被破坏了,解析器没有将body直接放在顶部下方级元素)。如果您确实提供了人们要求的信息(同样,请参见 MCVE 链接),人们可以帮助您调试它。
标签: python python-2.7 beautifulsoup