Scrapy 找不到 Nokogiri 找到的 Xpath

Scrapy failed to find Xpath that Nokogiri found

我刚开始为一个网站工作,该网站需要从多个 stores/sites...

中抓取产品

我对python和scrapy有点陌生,原来的代码都是在scrapy里面写的,所以在测试爬虫和Xpaths的时候,我用的是Scrapy,也打开了另外一个console,用nokogiri测试(Ruby gem)

在特定站点中,我无法使用 scrapy 提取某些内容,但我发现我可以使用相同的 xpathurl 从相同的 url 中获取此内容

这是两种情况下使用的代码片段:

谁能帮我解释一下,请注意这个 scrapy 代码是 运行,我刚刚被报告说它已经停止了,主要问题是需要添加 headers

希望我说得足够清楚,感谢您的关注:)

原因是您使用的User-Agent。

我用一个简单的 scrapy shell(默认 User-Agent)尝试了这个网站,我得到了以下响应:

>>> response.body
'<HTML><HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD><BODY>\n<H1>Access Denied</H1>\n \nYou don\'t have permission to access "http&#58;&#47;&#47;www&#46;pullandbear&#46;com&#47;eg&#47;en&#47;man&#47;accessories&#47;pack&#45;of&#45;3&#45;assorted&#45;bracelets&#45;c29537p100036212&#46;html" on this server.<P>\nReference&#32;&#35;18&#46;3f496768&#46;1453197808&#46;1ef09a53\n</BODY>\n</HTML>\n'

所以在你的Request中改变你的User-Agent(或者通过scrapy的设置设置一次)你应该准备好收集你的信息了。

如您所见,服务器 returns 拒绝访问 User-Agent 不是浏览器的站点 -- 就像您的 cURL 代理一样。

如果我使用以下 User-Agent 启动 shell:

'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36'

并执行你的 XPath 我得到以下结果:

>>> response.xpath('//script[contains(text(),"var ProductViewJSON")]')
[<Selector xpath='//script[contains(text(),"var ProductViewJSON")]' data=u'<script type="text/javascript">\r\n\tvar Pr'>]