刮痧。按内容查找标签
Posted
技术标签:
【中文标题】刮痧。按内容查找标签【英文标题】:Scrapy. find a tag by its content 【发布时间】:2020-05-13 02:20:12 【问题描述】:如何通过内容找到标签?这就是我找到必要元素的方式,但某些页面的结构不同,这并不总是有效。
yield
...
'Education': response.css('.provider-item:nth-child(3) .h2-style+ span::text').get(),
'Training': response.css('.provider-item:nth-child(4) .h2-style+ span::text').get(),
...
【问题讨论】:
嗨,Sasha,您能否通过添加一些示例,通过显示预期输出和哪里出错,让问题更清楚一些? 嗨@VishnuVS! html 代码:<div class="listing-info listing-6 provider-item"> <span class="listing-h2 h2-style">Education</span> <span itemprop="alumniOf" class="">A.B. in Economics with a minor in Asian Studies, <br>Occidental College<br>Masters in Chinese Medicine, Tai Hsuan Foundation</span> </div>
我找到了“教育”这个标题:response.xpath("string(//span[contains(., 'Education')])").get()
如何获取下面的文字?
【参考方案1】:
查看代码示例
In [4]: i = response.xpath('.//span[contains(text(),"Education")]')
In [5]: i
Out[5]: [<Selector xpath='.//span[contains(text(),"Education")]' data='<span class="listing-h2 h2-style">Edu...'>]
In [6]: i.xpath('following-sibling::span[1]/text()').extract()
Out[6]:
['A.B. in Economics with a minor in Asian Studies, ',
'Occidental College',
'Masters in Chinese Medicine, Tai Hsuan Foundation']
【讨论】:
谢谢。有用。如何通过 CSS 选择器找到这个元素? 查看链接link1link2 我尝试使用 CSS:response.css(span:contains("Education"))
我得到 SyntaxError: invalid syntax【参考方案2】:
如果你想一次从div.provider-item
标签中提取所有数据点,你可以试试这个(如果span.h2
标签内的“key”和span
标签内的value
带有itemprop
属性
data =
for item in response.css("div.provider-item"):
key = item.css("span.listing-h2.h2-style::text").extract_first()
value = item.css("span[itemprop]::text").extract()
#value = item.css("span::text").extract()[1:]
data[key] = value
如果每个div.provider-item
标签都有严格的 2 个span
标签,你可以试试这样:
data =
for item in response.css("div.provider-item"):
key, value = item.css("span::text").extract()
data[key] = value
【讨论】:
以上是关于刮痧。按内容查找标签的主要内容,如果未能解决你的问题,请参考以下文章