changmind 发表于 2020-7-21 00:21:41

用scrapy爬豆瓣top250的问题

本帖最后由 changmind 于 2020-7-21 23:26 编辑

用scrap可以正常爬取,但是爬取出来的东西很多重复。谁能帮忙看看什么问题。
什么都正常,就是出来的东西有很多重复的,正常是250条数据,我出来上千条。

import scrapy
from douban.items import DoubanItem

class DoubanSpiderSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['douban.com']
    start_urls = ['https://movie.douban.com/top250']

    def parse(self, response):
      content = response.xpath('//ol/li')
      
      for each in content:
            item = DoubanItem()
            item['rank'] = each.xpath('//em/text()').extract()
            item['name'] = each.xpath('//div[@class="hd"]/a/span/text()').extract()
            item['info'] = each.xpath('//p/text()').extract()
            item['scort'] = each.xpath('//div[@class="star"]/span/text()').extract()

            yield item

      if len(response.xpath('//span[@class="next"]/a/@href')) != 0 :
            next_url = response.xpath('//span[@class="next"]/a/@href').extract()

            yield scrapy.Request('https://movie.douban.com/top250' + next_url,callback = self.parse)

foxiangzun 发表于 2020-7-21 09:16:28

yield scrapy.Request('https://movie.douban.com/top250' + next_url,callback = self.parse)

这里面,加上

dont_filter = False

changmind 发表于 2020-7-21 18:22:48

foxiangzun 发表于 2020-7-21 09:16
这里面,加上

这个是什么?我翻页是正常的。

foxiangzun 发表于 2020-7-22 11:18:05

changmind 发表于 2020-7-21 18:22
这个是什么?我翻页是正常的。

据说是筛选器,关掉就会去重

xiaosi4081 发表于 2020-7-22 14:40:36

import scrapy
from douban.items import DoubanItem

class DoubanSpiderSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['douban.com']
    start_urls = ['https://movie.douban.com/top250']

    def parse(self, response):
      content = response.xpath('//ol/li')
      
      for each in content:
            item = DoubanItem()
            item['rank'] = each.xpath('//em/text()').extract()
            item['name'] = each.xpath('//div[@class="hd"]/a/span/text()').extract()
            item['info'] = each.xpath('//p/text()').extract()
            item['scort'] = each.xpath('//div[@class="star"]/span/text()').extract()

            yield item

      if len(response.xpath('//span[@class="next"]/a/@href')) != 0 :
            next_url = response.xpath('//span[@class="next"]/a/@href').extract()

            yield scrapy.Request('https://movie.douban.com/top250' + next_url,callback = self.parse,dont_filter = False)

临时号 发表于 2020-7-22 18:03:47

你忘记退出了吧

changmind 发表于 2020-7-22 20:23:32

临时号 发表于 2020-7-22 18:03
你忘记退出了吧

退出啥?

changmind 发表于 2020-7-23 22:18:28

xiaosi4081 发表于 2020-7-22 14:40


复制黏贴有意思?

陈尚涵 发表于 2020-7-24 17:13:12

可能出现重复执行了吧,总之你仔细检查一下代码

心驰神往 发表于 2020-11-3 11:17:35

数据对吗

bonst 发表于 2020-11-3 11:51:29

多设置断点,其实debug功能能检测很多错误

象棋爱好者 发表于 2020-11-3 19:42:54

鱼币?

象棋爱好者 发表于 2020-11-3 19:43:29

{:10_266:}{:10_266:}{:10_266:}

象棋爱好者 发表于 2020-11-3 19:44:23

?????

象棋爱好者 发表于 2020-11-3 19:44:57

怎么回事?

象棋爱好者 发表于 2020-11-3 19:45:43

。。。{:10_247:}{:10_247:}{:10_247:}

象棋爱好者 发表于 2020-11-3 19:46:25

{:10_249:}{:10_249:}{:10_249:}

象棋爱好者 发表于 2020-11-3 19:47:02

终于来了

Stubborn 发表于 2020-11-3 20:07:06

看看是不是翻页出的问题,再说了,总共就10几页,放到初始的url里面请求就得,搞啥翻页操作啊
页: [1]
查看完整版本: 用scrapy爬豆瓣top250的问题