我在python中使用selenium来抓一个网站。大多数页面运行良好,但我无法捕捉到一个例外。 html:
<div class="parablock">
<p>De Hoge Raad acht geen termen aanwezig voor een veroordeling in de proceskosten.<span class="linebreak1"> </span></p>
<p>
<span class="emphasis" style="font-weight:bold;">4 Beslissing</span> </p>
<p>De Hoge Raad verklaart het beroep in cassatie ongegrond.</p>
</div>
我所追求的是最后一段文字:“De Hoge Raad verklaart het beroro in cassatie ongegrond。” 问题是,有几个div与类parablock。还有多个跨度与类强调。
只有一个是“Beslissing”。但是,这不是一个类或任何东西。有没有一种简单的方法来刮取匹配字符串“Beslissing”的所需文本?
或者我是否必须将整个页面变成汤,将事物变成字符串并使用正则表达式将所有内容转换为“Beslissing”之后的文本?
答案 0 :(得分:1)
尝试使用find_by_xpath('//p[span[contains(text(),"Beslissing")]]/following-sibling::p')
查找包含<p>
包含文字<p>
的{{1}}兄弟<span>
元素
答案 1 :(得分:1)
我认为您可以使用regex selector from scrapy
或者您可以选择所有.parablock
并制作自己的逻辑,例如:
for el in response.css('.parablock'):
if el.css('.emphasis::text').extract()[0] == '4 Beslissing': # you might want a more bosut comparison here
my_value = el.css('p::text').extract()[-1]
break
这只是一个例子,但如果re
选择器没有削减它,我会选择类似的东西。