使用Scrapy在特定<p>之后提取

2024-03-28 22:48:01 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样的结构

<div id="body">
<h1> Title </h1>
<p> Date Created </p>
<p class="text-bold"> Description </p>
<p> Para1 </p>
<p> Para2 </p>
<p> Para..</p>
<p> ParaN </p>

我正试着把帕兰一号线连在一起。为了添加到它上面,某些链接中的Para1可能被放置为//p[5],有时也被放置为//p[6]。在

所以通过运行默认值

^{pr2}$

它有时会失败并返回错误的字段,因为x是动态的。保持不变的是我需要<p class="text-bold"> Description </p>下的所有字段。在

有什么办法吗?在


Tags: textdividdatetitlebodydescriptionh1
1条回答
网友
1楼 · 发布于 2024-03-28 22:48:01

如果您需要<p class="text-bold"> Description </p>后面的所有字段,您可以简单地尝试xpath ^{}函数

html = """
<div id="body">
<h1> Title </h1>
<p> Date Created </p>
<p class="text-bold"> Description </p>
<p> Para1 </p>
<p> Para2 </p>
<p> Para..</p>
<p> ParaN </p>
"""

from scrapy import Selector
sel = Selector(text=html)
xpath = "//p[contains(text(), 'Description')]/following-sibling::p/text()"
r = sel.xpath(xpath).extract()
print(r)
# [u' Para1 ', u' Para2 ', u' Para..', u' ParaN ']

相关问题 更多 >