scrapy 多条rule的执行顺序问题?

新手上路,请多包涵

最近在写scrapy框架的爬虫,爬百度百科词条
下面rules里面有两个rule,如果url是分类就继续爬,是item词条就解析
但是我现在运行时全都是爬取的baike.baidu.com/fenlei/分类页面,好像是一直在执行第一个rule就没有执行遇到item就解析的函数。
求助怎么解决??
谢谢各位大佬!!

class BaikeSpider(CrawlSpider):
    name = "BaikeSpider"
    allowed_domains = ['baike.baidu.com']
    start_urls = ['https://baike.baidu.com']

    rules = (
        Rule(LinkExtractor(allow=(r'/fenlei/*', )), follow = True),
        Rule(LinkExtractor(allow=(r'/item/*')), follow= False, callback="parse_item"),
    )

    def parse_item(self, response):
        try:
            content = response.css('body div.body-wrapper div.content-wrapper div div.main-content')
            baike_item = SpiderProjectItem()
            baike_item['itemTitle'] = "".join(content.css('dl dd h1::text').extract_first())
            baike_item['itemUrls'] = response.url
            baike_item['itemSummary'] = "".join(content.css('div.lemma-summary::text').extract_first())

            return baike_item

        except Exception as error:
            logging.error(error)

运行结果部分如图:
图片描述

我在设置里试过设置max_depth,但是还是没有爬到item??
clipboard.png
多谢各位!!!

阅读 4.4k
2 个回答
新手上路,请多包涵

大佬,这个问题解决了么?我也遇到这个问题了,求助

给链接提取器增加约束条件,比如参数restrict_css即可,没有的话默认是提取start_url页所有的符合规则的a链接地址,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题