gpt4 book ai didi

python - Scrapy:从奇怪的 HTML 标记中抓取键/值对

转载 作者:行者123 更新时间:2023-12-01 04:31:05 25 4
gpt4 key购买 nike

我需要从如下所示的网页中提取数据:

<div>
<div>
<p><strong>key1</strong>value1</p>
<p><strong>key2</strong>value2</p>
<p><strong>key3</strong>value3</p>
<p><strong>key4</strong>value4</p>
</div>
</div>

获取 JSON 文件会很棒:

{"key1":"value1", "key2":"value2", "key3":"value3", "key4":"value4"}

因为你猜怎么着?有时,网页看起来像:

<div>
<div>
<p><strong>key1</strong>value1</p>
<p><strong>key3</strong>value3</p>
<p><strong>key2</strong>value2</p>
<p><strong>key4</strong>value4</p>
</div>
</div>

或者:

<div>
<div>
<p><strong>key1</strong>value1</p>
<p><strong>key4</strong>value4</p>
</div>
</div>

(别问。我不知道为什么没有正确序列化他们的数据,或者使用这个荒谬的标记。我只是想抓取数据并完成它。)

过去,我使用 Scrapy 取得了巨大成功,但仅限于具有清晰标记和明确定义的类或 ID 的小型项目。这显然更难,我似乎无法理解它。事实上,我对 Python 几乎一无所知,这也无济于事。

我尝试过类似的方法,但显然行不通:

def parse(self, response):
values = response.xpath('//div[2]/p/node()[not(self::strong)]')
for value in values:
yield {
value.xpath('../strong/text()').extract(): value.extract()
}

我尝试使用索引进行操作,但选择器不支持索引。我可以尝试记住我的关于函数之类的初学者 CS 类(class),但也许你们中的一个人有一个想法?任何帮助将不胜感激。

最佳答案

我没有要测试的设置,但我会尝试找到强元素来获取 key ,然后使用以下兄弟轴来获取其后面的值,而不是相反。

def parse(self, response):
keys = response.xpath('//div[2]/p/strong')
for key in keys:
yield {
key.extract(): key.xpath('following-sibling::node()').extract()
}

关于python - Scrapy:从奇怪的 HTML 标记中抓取键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32412122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com