【问题标题】:scrapy css selector - get text from sub elementsscrapy css 选择器 - 从子元素中获取文本
【发布时间】:2021-07-04 15:58:49
【问题描述】:

我试图抓取的页面有这样的元素。我想在 div 中获取整个文本。

<div class="OrganicTitle-LinkText organic__url-text">
    <b>Bitcoin</b> - Open source P2P money
</div>

我当前使用的选择器是
response.css("div.OrganicTitle-LinkText.organic__url-text::text").get()
但是好像忽略了&lt;b&gt;&lt;/b&gt;里面的文字
我得到的结果是 - Open source P2P money
我只想使用 css 选择器获取整个文本(因为更改为 xpath 需要大量代码更改)
即使在结果中提取了&lt;b&gt;&lt;/b&gt; 标签也不会出现问题,因为它们可以通过使用正则表达式轻松删除。
任何帮助将不胜感激。

【问题讨论】:

  • 我的回答解决了你的问题吗?
  • 这应该可以' '.join(response.css("[class^='OrganicTitle-LinkText'] ::text").getall()).strip()
  • 要获取以下所有文本元素,您需要在 ::text 之前添加一个空格。然后你可以joinstrip得到你想要的文本:"".join(response.css(".organic__url-text ::text").getall()).strip()
  • @SIM,您的解决方案有效。谢谢!
  • @tomjn,您的解决方案也有效。也谢谢你。

标签: web-scraping scrapy css-selectors web-crawler


【解决方案1】:

我不确定,但我会试试这个:

response.css("div.OrganicTitle-LinkText.organic__url-text::text").extract()

或者这个:

response.css("div.OrganicTitle-LinkText.organic__url-text").extract()

【讨论】:

  • 没用。 (...::text).extract() 返回[&lt;div class=\"OrganicTitle-LinkText organic__url-text\"&gt;&lt;b&gt;Bitcoin&lt;/b&gt; - Open source P2P money&lt;/div&gt;],第二个返回[ - Open source P2P money]
猜你喜欢
  • 2020-04-24
  • 2021-10-08
  • 2021-06-03
  • 2020-07-25
  • 2017-04-20
  • 2012-08-24
  • 2011-08-24
  • 2015-10-15
  • 1970-01-01
相关资源
最近更新 更多