我尝试废弃并抓取网站。数据位于tbody标记(事件名称)中。 当我检查谷歌控制台时,tbody标签有文本数据,但当我尝试废弃它时,它返回一个空的答案(也在scrapy shell中测试)。我检查了一个AJAX方法,因为它可能会破坏脚本,但似乎没有它。
您是否知道为什么答案为空,而tbody标签在源代码中有文字?
这是我的代码
why
15.00
终端窗口
A[ B <= 0] = 0
和scrapy shell
答案 0 :(得分:2)
这是一个常见问题:有时表格的源HTML中没有tbody
标记(现代浏览器会自动将其添加到DOM中)。因此,请务必检查HTML 源代码:
//*[@class="cal2table"]//tr/td[2]/div/div[1]/div/a/text()
答案 1 :(得分:2)
只需从xpath或css表达式中删除tbody
即可。
现代浏览器以向表中添加tbody
元素而闻名。另一方面,Scrapy不会修改原始页面HTML,因此如果在XPath表达式中使用tbody
,则无法提取任何数据。
答案 2 :(得分:1)
我假设您正在尝试选择所有事件名称,如果是这样,您可以将其用作xpath //*[@class="cal2table"]/tbody/tr/td[2]/div/div[1]/div/a/text()
所以我相信您遇到的问题是由于您的xpath定义,而没有任何关于您尝试选择的内容的进一步信息,这是我能给出的最佳答案。
提示,您可以在Chrome / Firefox控制台中使用以下命令来测试您的xpath:
$x('//*[@class="cal2table"]/tbody/tr/td[2]/div/div[1]/div/a/text()')
要在当前尝试加载项目时使用此功能,请尝试使用以下代码段。我没有对此进行测试,因此您可能需要进行小幅调整。
for unElement in response.xpath('//*[@class="cal2table"]//tr'):
loader = ItemLoader(JustrunlahItem(), selector=unElement)
loader.add_xpath('eve_nom_evenement', './/td[2]/div/div[1]/div/a/text()')