AttributeError:lxml parse getroot方法的非类型

2024-09-30 18:13:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用lxml和mechanize来废弃一个网站,但我得到了一个错误:

AttributeError:“NoneType”对象没有属性“xpath”

经过一番检查,我发现html没有返回任何结果。在

有趣的是,这段代码可以在其他网站上运行,只是无法运行这个特定的网站(http://www.selangortimes.com

url = 'http://www.selangortimes.com'
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_refresh(False)
br.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
br.open(url)
resp = br.response()
html = lxml.html.parse(resp).getroot()
link_targets = [link.attrib.get('href') for link in html.xpath(expr)]

感谢您的帮助:)

更新: 使用上述代码的工作网站示例-http://www.themalaysianinsider.com


Tags: 代码brcomhttpurl网站htmlwww
1条回答
网友
1楼 · 发布于 2024-09-30 18:13:21

下面是您发布的代码的稍微修订版本,使用lxml2.3.6mechanize0.2.5生成一个列表,其中列出了<a>元素中位于http://www.selangortimes.comurl的所有href属性。注意关于您最近的评论,您必须import lxml.html。在

import mechanize
import lxml.html

url = 'http://www.selangortimes.com'
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_refresh(False)
br.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
br.open(url)
resp = br.response()
html = lxml.html.parse(resp).getroot()
link_targets = [link.attrib.get('href') for link in html.xpath('//a')]
print(link_targets)

相关问题 更多 >