如果某些标签没有属性,嵌套的.xpath(' @ attribute')会给出一个空结果

时间:2018-04-27 15:48:37

标签: python xpath scrapy

我正在使用scrapy抓取一个网站。 div列表中有些显示无,其他是显示块。我只想从显示块的div中获取数据。 但是我无法从div中获取style属性。我还检查了stackoverflow上的解决方案,即

response.xpath("//div").xpath("@style").extract()

这给了我输出中的空白列表。 它不是获取样式属性。 或者我可以使用scrapy获取原始HTML然后在美丽的汤的帮助下获取div的style属性? 或者,如果我可以获得字符串中的原始html也将有所帮助。我想要的只是风格属性。

示例html: -

<div class="asd">div content need to extract</div>

<div class="asd" style="display:none">no need to extract</div>

2 个答案:

答案 0 :(得分:0)

基于您的示例html,此解决方案可能很有用(使用beautifulsoup):

divs = soup.select('div.asd')
theDiv = [div for div in divs if 'style' not in div.attrs]

答案 1 :(得分:0)

我认为你的xpath已关闭,试试这个:

response.xpath("//div/@style").extract()

或:

response.xpath("//div").xpath("./@style").extract()
# notice the relevant path here^^