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

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 vue2(标签-chrome|关键词-浏览器兼容)
  • ¥15 python网络流自动生成系统 医学领域
  • ¥15 sql查询仓库里都有什么
  • ¥15 代码的修改,添加和运行完善
  • ¥15 krpano-场景分组和自定义地图分组
  • ¥15 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器