刮痧。按内容查找标签

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

【讨论】:

以上是关于刮痧。按内容查找标签的主要内容,如果未能解决你的问题,请参考以下文章

linux下按文件名和文件内容查找文件

特定标签及其内容的正则表达式,按标签名称分组

用于查找 HTML 标签及其内容的正则表达式的否定 - java

wps表格如何查找相同内容

查询猫鼬以按名称查找所有内容,然后选择最后创建的

在怎样WORD中查找含有特定内容的段落并按顺序标上123456等等