我正在使用scrapy CSS选择器提取以下html并将其加载到项目加载器中。
如何提取td
的文本,其中此td
包含类div
的{{1}}
即我要提取文本sweetness
。
HTML代码:
Dry
在草率的<tr>
<td>
<div class="grape">
</div>
Cabernet Sauvignon
</td>
<td>
<div class="sweetness">
</div>
Dry
</td>
</tr>
中,我定义了一个字段ItemLoader
,但是我不确定对此的css select查询是什么。
PYTHON代码:
sweetness
答案 0 :(得分:0)
请参阅下文-
loader = ItemLoader(item=wine_item, response=response)
loader.add_xpath('div_content', '//td/div[@class="sweetness"]')
loader.load_item()
答案 1 :(得分:0)
我已经在这个问题上苦苦挣扎了很长时间,并且意识到css不支持选择父节点parent selector in css。
幸运的是,xpath选择器比CSS选择器更强大! lxml软件包在scrapy中得到了它的支持,其中xpath实际上是一流的,并且是css的超集,而css只是对其的扩展(实际上是一个单独的软件包和所有css selectors are translated to xpath)。
所以回到您的问题,只需使用父路径从您的div.sweetness
到父节点td
...
loader.add_xpath('sweetness', '//div[@id="answer-13134778"]/parent::*')
...
或速记
....
loader.add_xpath('sweetness', '//div[@id="answer-13134778"]/..')
````
应该做到!