Scrapy 爬取数据时遇到网络延迟导致数据抓不全的解决方案。

在使用python的scrapy框架进行爬取外贸网站ebay上某类别产品销量时,我遇到了这个问题,每次爬取数据十个里面总有两三个会遗漏,有时候甚至连着四五条数据被遗漏。


这个问题一直困扰了我好几天。一开始以为是并发开的太多,程序运行太快,或者是被网站屏蔽等。其实都不是。也考虑到了网络延迟等原因,调整了速度和等待时间,反复的调试了好多次都没用,总会有那么几条数据会被遗漏。

后来我在尝试了使用selenium模拟动态页面请求时,终于找到了一个比较完美的方案。但是缺点是数据抓取速度没那么快了。但这其实影响不大,反正我们睡觉的时候也可以让机器工作嘛。

我们的案例是爬取关键词iPhone x case的商品前50条数据(eBay显示50,其实实际是60条),这里没有做翻页的深度。

这里注意无销量的产品是抓取不到销售数据的,scrapy会报错然后跳到下一条。所以我们把无销量的产品sold=“0 sold”传给pipelines就可以了

下面我把代码贴出来:

# -*- coding: utf-8 -*-
import scrapy,time
from scrapy.selector import Selector
from scrapy.http import Request
from ..items import ebItem
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

count = 0
count2 = 0

class Ebt2Spider(scrapy.Spider):
    name = 'ebt2'
    allowed_domains = 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值