gpt4 book ai didi

python - 抓取 RSS feed 时无法抓取 scrapy

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

我想抓取所有标题标签以及父项标签中的其他标签。但无法抓取。尝试了 scrapy shell,似乎工作正常。下面是我的完整代码

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from scrapy_rss.items import rssItem
from scrapy.utils.response import get_base_url
import time

class MySpider(CrawlSpider):
name = 'rssaggr'
allowed_domains = ['indianexpress.com']
start_urls = ['http://indianexpress.com/section/sports/feed/']
rules = (
Rule(SgmlLinkExtractor(allow=('', ), deny=('defghi\.txt')), callback='parse_item',follow=True),
)
def parse_item(self, response):
sel = Selector(response)
items = sel.xpath('//item')
for elements in items:
item = rssItem()
item['title'] = elements.xpath('./title/text()').extract()
return item

下面是我的 items.py

from scrapy.item import Item, Field

class ScrapyRssItem(Item):
# define the fields for your item here like:
# name = Field()
pass

class rssItem(Item):
title = Field()

最佳答案

您的函数应命名为parse,而不是parse_item。 Scrapy 希望您覆盖蜘蛛的 parse 方法。因此您不应使用不同的名称 ( see the documentation )。

此外,您的代码将仅返回第一个解析的项目。您可以将所有项目添加到列表中,然后将其返回。我像这样修改了您的代码,以便您从提要中获取所有项目(我测试了它并且它有效)。

def parse(self, response):
sel = Selector(response)
items = sel.xpath('//item')
parsed_items = []
for elements in items:
item = rssItem()
item['title'] = elements.xpath('./title/text()').extract()
parsed_items.append(item)
return parsed_items

关于python - 抓取 RSS feed 时无法抓取 scrapy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213736/

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