Scrapy xpath获取以<开头的元素的文本

桑托什·吉米尔

我正在尝试从此html代码段中获取文本“ <1小时”。

<div class="details_wrapper">
<div class="detail">
    <b>Recommended length of visit:</b>
    <1 hour
</div>
<div class="detail">
    <b>Fee:</b>
    No
</div>
</div>

这是我正在使用的xpath表达式:

visit_length = response.xpath(
    "//div[@class='details_wrapper']/"
    "div[@class='detail']/b[contains(text(), "
    "'Recommended length of visit:')]/parent::div/text()"
).extract()

但是它无法获取文本。我认为这是由于我需要的文本中的“ <”,它被认为是html标记。我如何刮擦文本“ <1小时”?

har07

考虑到Scrapylxml后台使用,可能值得检查一下如何lxml处理这种HTML,它<在一个文本节点中包含XML特殊字符

>>> from lxml import html
>>> raw = '''<div class="details_wrapper">
... <div class="detail">
...     <b>Recommended length of visit:</b>
...     <1 hour
... </div>
... <div class="detail">
...     <b>Fee:</b>
...     No
... </div>
... </div>'''
... 
>>> root = html.fromstring(raw)
>>> print html.tostring(root)
<div class="details_wrapper">
<div class="detail">
    <b>Recommended length of visit:</b>

<div class="detail">
    <b>Fee:</b>
    No
</div>
</div></div>

请注意,在上面的演示中,您怀疑文本节点'<1 hour'已完全脱离root元素源。作为一种解决方法,请考虑使用,BeautifulSoup因为在处理这种HTML情况下它更加合理(您可以通过response.body_as_unicode()创建soupfrom Scrapy响应来传递):

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(raw, "html.parser")
>>> print soup.prettify()
<div class="details_wrapper">
 <div class="detail">
  <b>
   Recommended length of visit:
  </b>
  &lt;1 hour
 </div>
 <div class="detail">
  <b>
   Fee:
  </b>
  No
 </div>
</div>

可以使用BS查找目标文本节点,如下所示:

>>> soup.find('b', text='Recommended length of visit:').next_sibling
u'\n    <1 hour\n'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

scrapy 和 xpath:获取子元素中的文本,如果父元素包含文本

来自分类Dev

提取文本xpath scrapy

来自分类Dev

Xpath表达式在Scrapy中获取可选元素

来自分类Dev

Scrapy:使用scrapy和xpath时,如何同时获取文本和带有<b>标记的文本?

来自分类Dev

使用Scrapy获取XPath属性

来自分类Dev

Scrapy:使用 XPath 获取项目

来自分类Dev

具有Scrapy节点的XPath以\ n开头

来自分类Dev

如何使用XPath从子节点获取文本(如果它是Scrapy中其他节点的父节点)

来自分类Dev

如何使用xpath方法获取Scrapy输出文件中的数字而不是文本?

来自分类Dev

使用 xpath 从scrapy shell 获取空响应,同时它在元素检查器中工作

来自分类Dev

在 python scrapy 中获取文本

来自分类Dev

Scrapy XPath删除<字符后的文本

来自分类Dev

在Scrapy中串联Xpath嵌套文本

来自分类Dev

Scrapy 和 xpath 找到带有文本“»”的 <a>

来自分类Dev

如何使用Scrapy XPATH选择此元素?

来自分类Dev

Scrapy-无法从xpath / css获取输出

来自分类Dev

如何使用scrapy xpath获取数据

来自分类Dev

XPath通过同级HTML元素获取文本

来自分类Dev

使用xpath获取html元素的文本内容

来自分类Dev

无法使用 xPath 在元素后获取文本

来自分类Dev

Scrapy和Ajax请求获取隐藏元素

来自分类Dev

Python Scrapy,包含文本,使用xpath排除文本

来自分类Dev

获取跨度文本的xpath

来自分类Dev

获取元素的XPath列表

来自分类Dev

获取元素的XPath列表

来自分类Dev

如何获取元素的xPath

来自分类Dev

在Scrapy中使用Xpath选择段落下方的任何文本

来自分类Dev

如何在Scrapy中使用Xpath提取文本?

来自分类Dev

xpath 提取特定节点中的所有文本并使用scrapy将其作为一个元素返回

Related 相关文章

热门标签

归档