Geophysic_CSU 2019-10-26 20:31 采纳率: 50%
浏览 863

Scrapy多级页面爬取,程序运行顺序问题

# -*- coding: utf-8 -*-
import scrapy
from SYDW.items import SydwItem
class DanweiCrawlingSpider(scrapy.Spider):
    # 继承自Spider类
    name = 'danwei_crawling'
    allowed_domains = ['chinasydw.org']#允许域名
    start_urls = ['http://www.chinasydw.org']
    base_domain = 'http://www.chinasydw.org'

    def parse(self, response):
        province = response.xpath("//div[@class='fenzhan']//a/@href")
        for each_p in province:
            yield scrapy.Request(each_p.get(),callback=self.get_page)


    def get_page(self,response):
        for each in response.xpath("//div[@class='body']/ul[@class = 'list11 clearfix']/li[not(@class='ivl')]"):
            item = SydwItem()
            name = response.xpath("//div[@class='body']/ul[@class = 'list11 clearfix']/li[not(@class='ivl')]/a[not(@style)]/text()").get()
            time = response.xpath("//div[@class='body']/ul[@class = 'list11 clearfix']/li[not(@class='ivl')]/span[@class='time']/text()").get()
            link = response.xpath("//div[@class='body']/ul[@class = 'list11 clearfix']/li[not(@class='ivl')]/a[not(@style)]/@href").get()
            item['name']=name
            item['time']=time
            item['link']=link
            yield item
        next_url = response.xpath("//div[@class='pageset']/a[last()]/@href").get()
        yield scrapy.Request(self.base_domain+next_url,callback=self.get_page,meta={'item':item})

思路:
parse函数获取分站信息
然后进入分站,获取分站每一页信息。

问题:
爬取顺序问题:
按设想应该是进入分站——爬取完多个页面——进入下一个分站——爬取完多个页面;实际上运行结果是进入分站——爬取完当前页面——进入下一个分站——爬取完当前页面,直到所有分站遍历完后再开始进入分站的下一页。

初学scrapy,希望得到大家的帮助。

  • 写回答

1条回答 默认 最新

  • 进击的Coders 2020-12-23 14:12
    关注

    我也遇到了这个问题,你解决了吗

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器