Scrapy tbody标签返回一个空答案,但里面有文字

时间:2018-03-08 10:56:29

标签: javascript python html ajax scrapy

我尝试废弃并抓取网站。数据位于tbody标记(事件名称)中。 当我检查谷歌控制台时,tbody标签有文本数据,但当我尝试废弃它时,它返回一个空的答案(也在scrapy shell中测试)。我检查了一个AJAX方法,因为它可能会破坏脚本,但似乎没有它。

您是否知道为什么答案为空,而tbody标签在源代码中有文字?

这是我的代码

why
15.00

终端窗口

A[ B <= 0] = 0

和scrapy shell

Scrapy shell

3 个答案:

答案 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()')