【问题标题】:XPath: Matching a text between two similar tagsXPath:匹配两个相似标签之间的文本
【发布时间】:2019-03-25 23:38:27
【问题描述】:

我正在尝试抓取结构混乱的网站,我需要的文本位于前 5 个连续 br 标记(不多也不少,正好 5 个)和以下 2 个连续 br 标记之间。
它看起来像这样:

<p class="A">
"Some text"
<br>
"Some text"
<br>
<br>
"Some text"
<br>
<br>
<br>
<br>
<br>
"Required text"
<br>
"Required text"
<br>
"Required text"
<br>
<br>
</p>

【问题讨论】:

  • 您没有指定所需的输出 XML,所以这个问题现在无法回答。
  • 所需的输出是“必填文本”文本节点中的文本
  • 可能只是将其拆分为
    并将其视为数组

标签: xpath web-scraping scrapy lxml text-parsing


【解决方案1】:

Scrapy 将&lt;br&gt; 标签转换为换行符,因此您可以提取整个文本并将其拆分为 5 个换行符:

> text = sel.xpath('//text()').extract()
['\n"Some text"\n', '\n"Some text"\n', ...]
> values = ''.join(text).split('\n\n\n\n\n')[1]
'\n"Required text"\n\n"Required text"\n\n"Required text"\n\n\n'
> values.strip().split('\n\n')
['"Required text"', '"Required text"', '"Required text"']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2014-08-03
    相关资源
    最近更新 更多