ord中的废索引

2024-04-29 02:07:06 发布

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

我目前正在用Scrapy创建一个cutsom webcrawler,并尝试用Elasticsearch索引获取的内容。 到目前为止还可以正常工作,但我只能按照爬虫程序过滤html标记的顺序将内容添加到搜索索引中。 例如

sel.xpath("//div[@class='article']/h2//text()").extract()

我可以用类“article”从div中的所有h2标记中获取所有内容,目前为止还不错。接下来进入索引中的元素自然来自所有h3标记:

^{pr2}$

但这里的问题是,站点上的整个文本顺序会像这样混乱,因为所有的标题都会首先被索引,然后它们的子节点才有机会,这对于搜索索引来说是致命的。 是否有一个技巧,如何正确地从一个页面中以正确的顺序获取所有内容?(不必是xpath,只需使用Scrapy)


Tags: 标记程序div内容顺序htmlarticleh2
1条回答
网友
1楼 · 发布于 2024-04-29 02:07:06

我想你可以用这样的方法来解决这个问题:

# Select multiple targeting nodes at once
sel_raw = '|'.join([
    "//div[@class='article']/h2",
    "//div[@class='article']/h3",
    # Whatever else you want to select here
])
for sel in sel.xpath(sel_raw):
    # Extract the texts for later use
    texts = sel.xpath('self::*//text()').extract()
    if sel.xpath('self::h2'):
        # A h2 element. Do something with texts
        pass
    elif sel.xpath('self::h3'):
        # A h3 element. Do something with texts
        pass

相关问题 更多 >