gpt4 book ai didi

python - 不确定用 Scrapy 迭代什么

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

我在使用 scrapy 迭代爬网时遇到问题。我正在提取标题字段和内容字段。问题是我得到一个 JSON 文件,其中列出了所有标题,然后是所有内容。我想获取 {title}、{content}、{title}、{content},这意味着我可能必须迭代解析函数。问题是我无法弄清楚我正在循环哪个元素(即 for x in [???]),这是代码:

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import SitemapSpider

from Foo.items import FooItem


class FooSpider(SitemapSpider):
name = "foo"
sitemap_urls = ['http://www.foo.com/sitemap.xml']
#sitemap_rules = [


def parse(self, response):
hxs = HtmlXPathSelector(response)
items = [
item = FooItem()
item['title'] = hxs.select('//span[@class="headline"]/text()').extract()
item['content'] = hxs.select('//div[@class="articletext"]/text()').extract()
items.append(item)
return items

最佳答案

您的 xpath 查询返回页面上的所有标题和所有内容。我想你可以这样做:

titles = hxs.select('//span[@class="headline"]/text()').extract()
contents = hxs.select('//div[@class="articletext"]/text()').extract()

for title, context in zip(titles, contents):
item = FooItem()
item['title'] = title
item['content'] = context
yield item

但这并不可靠。尝试执行返回包含 titlecontent 的 block 的 xpath 查询。如果您向我展示 xml 源代码,我会帮助您。

blocks = hxs.select('//div[@class="some_filter"]')
for block in blocks:
item = FooItem()
item['title'] = block.select('span[@class="headline"]/text()').extract()
item['content'] = block.select('div[@class="articletext"]/text()').extract()
yield item

我不确定 xpath 查询,但我认为想法很清楚。

关于python - 不确定用 Scrapy 迭代什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10100495/

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