scrapy 如何使用剪贴板获取不确定数量的“< p>“标记文本?

xzabzqsa  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(90)

如何使用scrapy?获取<p>标签的不确定数量的文本,如以下两个示例所示:
获取<div class="entry-content"><h2>XXXX Characteristics</h2><h3>XXXX Diet</h3>之后的所有<p>文本,然后将<p>的块合并到其他字段,但<P>的数目不确定。

第一页第一页第二页

hwazgwia

hwazgwia1#

您可以尝试提取div的所有子项,并执行正则表达式测试,以查看它是h2还是h3,然后测试文本是否包含"Diet""Characteristics",如果通过,则收集所有为<p>的同级。

def parse(self, response):
    collect = False
    contents = []
    for selector in response.xpath("//div[@class='entry-content']/*"):
        val = selector.xpath("./text()").get()
        if collect and selector.re('<p'):
            contents.append(val)
            continue
        if val and selector.re(r'<h[23]'):
            if "Characteristics" in val or "Diet" in val:
                collect = True
        else:
            collect = False
    yield {"contents" : contents}

相关问题