当我使用选择器进行选择时,在使用Scrapy 1.6爬行页面https://github.com/rg3/youtube-dl/pull/11272时:
// div [@class ='file js-comment-container js-resolvable-timeline-thread-container']
如果您正在浏览器或其他工具上使用它,请不要忘记阻止JS。
结果将是没有属性“ extract_first”的东西。
例如,运行此代码将面临该错误:
for code_and_comment in response.xpath(
"//div[@class = 'file js-comment-container js-resolvable-timeline-thread-container']"):
if code_and_comment is None:
print('it is NONE')
print(code_and_comment.extract_first())
我听不懂,你知道我在哪里错吗?预先感谢。
ROBOTSTXT_OBEY = False
答案 0 :(得分:2)
原因是在您的代码code_and_comment
中已经是一个单个选择器,因此拥有extract_first
毫无意义。它仅适用于选择器列表(这是您从response.xpath(...)
获得的信息)。
您可以执行以下操作:
for code_and_comment in response.xpath(
"//div[@class = 'file js-comment-container js-resolvable-timeline-thread-container']"):
if code_and_comment is None:
print('it is NONE')
print(code_and_comment.extract())