gzdyleon 2019-09-27 23:42 采纳率: 0%
浏览 926

python 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 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码