gzdyleon 2019-09-27 23:47 采纳率: 0%
浏览 439

scrapy 分页抓取后合并问题

scrapy学习有几个月了,普通scrapy和crawl都能够实现,现在碰到一个问题:
在使用scrapy爬取多分页后,如何把多分页内容合并写入到一个item[x]内?
我现在使用 yield Request 至 def art_url 来获取分页内容,用append把内容集合后,用 item['image_urls'] = self.art_urls 来接收结果,
但结果一直接收,每篇内容的分页的接收导致很多,请教一下,如何把每篇的分页内容合并写入一项itme?

刚学不到半年,代码凌乱,望包含,主要是想学习如何爬取小说站,把每一章都合并在一起,不要分页搞很多数据,和合适代码推荐下,研究学习,谢谢了
我的代码:

art_urls = []
rules = (
        Rule(LinkExtractor(allow='wenzhang/',restrict_xpaths=('//table[@id="dlNews"]')), callback='parse_item', follow=True),
    )
    def parse_item(self, response):
        print(response.url)
        item = SpiderItem()
        conn = Redis(host='127.0.0.1', port=6379)
        item['title'] = response.xpath('//h1/text()').extract_first()
        ex = conn.sadd('movies_url', response.url)
        for next_href in response.xpath('//div[@class="pager"]/ul/li/a/@href').extract():
            next_url = self.base_url + next_href.replace('../','')
            if ex == 1:
                # print('开始解析单页')
                yield Request(next_url, callback=self.art_url)
                # yield scrapy.Request(url=next_url, callback=self.parse_detail, meta={'title': title,'img_src':img_src})
            else:
                print("无数据更新!!!")
        # print(self.art_urls)
        item['image_urls'] = self.art_urls
        # print(len(item['image_urls']))
        # print(item)
        yield item

    def art_url(self, response):
        art_urls = response.xpath('//div[@id="content"]/div/p/img/@src').extract()
        for art_url in art_urls:    # 开始解析分页
            art_url = art_url.replace('../../upload/','')
            self.art_urls.append(art_url)
  • 写回答

1条回答

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题