首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python如何分布式和高并发爬取电商数据

python如何分布式和高并发爬取电商数据

原创
作者头像
小白学大数据
发布于 2023-05-08 08:19:27
发布于 2023-05-08 08:19:27
49800
代码可运行
举报
文章被收录于专栏:python进阶学习python进阶学习
运行总次数:0
代码可运行

随着互联网的发展和数据量的不断增加,网络爬虫已经成为了一项非常重要的工作。爬虫技术可以帮助人们自动地从互联网上获取大量数据,并且这些数据可以应用于各种领域,如搜索引擎、数据分析和预测等。然而,在实际应用中,我们面临的一大难题就是如何高效地爬取大量数据。分布式爬虫和高并发技术的出现,为解决这个难题带来了新的解决方案。

比如我们在实际爬虫过程中如何通过分布式爬虫和高并发来实现电商平台拼多多的数据爬取。首先是分布式爬虫的使用,分布式爬虫是指将一个爬虫任务分成多个子任务,并分配到多个计算机节点上进行并行处理的一种爬虫技术。它可以大幅提高爬虫的效率和速度,同时降低单个节点的负载和风险。它最大优势在于可以通过多台计算机同时进行任务处理,从而实现高效、快速地爬取大量数据的目标。同时,分布式爬虫还可以通过多个节点相互协作,避免单点故障,提高爬虫的可靠性和稳定性。

高并发之分布式爬虫的意思是,指通过分布式爬虫技术实现高并发的爬虫框架。它可以帮助人们快速地获取大量的数据,并且可以支持高并发的数据请求,爬虫框架的选择有很多,这里重点介绍下Scrapy-Redis 。是基于 Scrapy 框架的分布式爬虫框架。它通过 Redis 数据库实现任务分发和结果合并,可以支持多个爬虫节点同时工作,从而实现高并发的爬虫任务。电商网站的反爬都是比较严的,各种反爬方式都是以难度最大优先。比如对IP的限制,爬取的时候需要使用高质量的IP辅助才能成功爬取数据,高质量IP的选择并不是很多,通过多次测试对比,亿牛云提供的代理产品是最优的选择,因为他们IP池足够大,能够支持很多大并发的爬取场景需求。这里我们可以通过他们提供的爬虫代理加强版IP池,通过分布式爬虫和高并发的代理的辅助来实现拼多多数据的爬取,实现过程如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        #! -*- encoding:utf-8 -*-
        import base64            
        import sys
        import random

        PY3 = sys.version_info[0] >= 3

        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str

            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes

        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服务器(产品官网 www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"

                # 代理验证信息
                proxyUser = "SRWFDQW"
                proxyPass = "548764"

                # [版本>=2.6.2](https://docs.scrapy.org/en/latest/news.html?highlight=2.6.2#scrapy-2-6-2-2022-07-25)无需添加验证头,会自动在请求头中设置Proxy-Authorization     
                request.meta['proxy'] = "http://{0}:{1}@{2}:{3}".format(proxyUser,proxyPass,proxyHost,proxyPort)

                # 版本<2.6.2 需要手动添加代理验证头
                # request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
                # request.headers['Proxy-Authorization'] = 'Basic ' +  base64ify(proxyUser + ":" + proxyPass)                    

                # 设置IP切换头(根据需求)
                # tunnel = random.randint(1,10000)
                # request.headers['Proxy-Tunnel'] = str(tunnel)

                # 每次访问后关闭TCP链接,强制每次访问切换IP
                request.header['Connection'] = "Close"

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
通过爬取豆瓣浅聊反爬策略的重要性
突然发现好多的爬虫爱好者学习爬虫的时候都喜欢爬豆瓣的东西,无论是电影、音乐还是小组等等。所以豆瓣网在反爬方面也是煞费苦心。当你的爬虫没什么策略可言时,很容易就会返回403错误。但是经过多次的实践大体可以看出豆瓣的反爬策略不外乎以下几点。
小白学大数据
2023/04/04
1.2K0
使用Scarpy框架简单的写个爬虫
python提供了很多的框架供大家选择使用,今天给大家重点介绍下Python开发的一个快速、高层次的web数据抓取框架——Scrapy框架,它主要用于抓取web站点并从页面中提取结构化的数据。 Scrapy不仅在爬虫中应该广泛,优点也是很突出的,因为它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等。 经常会在网上看到很多初学 Scarpy的小伙伴抱怨完全不清楚Scrapy该怎样入手,即便看的是中文的文档,也感到很难理解,这应该是大多数的学爬虫的困惑。我觉得大家之所以感到Scrapy难学,主要原因应该是其官方文档实在太过凌乱,又缺少实用的代码例子,让人看得云里雾里,不知其所已然。虽然有这样的困惑在,但依然阻挡不了他的吸引力,用过这个框架的都知道它应该是Python提供的框架中目前最好用的一个。其架构的思路、爬取执行的效能,还有可扩展的能力都非常出众,再配以Python语言的简洁轻巧,使得爬虫的开发事半功倍。 接下来我们就使用这个框架简单的写个爬虫,简单的获取下百度数据,代码如下所示:
小白学大数据
2024/06/08
1060
项目配置之道:优化Scrapy参数提升爬虫效率
在当今信息时代,数据是无处不在且无比重要的资源。为了获取有效数据,网络爬虫成为了一项至关重要的技术。Scrapy作为Python中最强大的网络爬虫框架之一,提供了丰富的功能和灵活的操作,让数据采集变得高效而简单。本文将以爬取豆瓣网站数据为例,分享Scrapy的实际应用和技术探索。
小白学大数据
2024/03/22
5140
python框架之Pyspider和Scrapy的区别
对于一些简单的爬虫需求来说,只是简单的利用 requsets, xpath 等爬虫库就可以。但是如果是更复杂的需求这些简单的爬虫库远远无法达到一个爬虫框架的要求。一个爬虫框架的雏形,应该包含调度器、队列、请求对象等。我们平时写的爬虫程序,连最基本的框架都不具备。
小白学大数据
2023/05/06
8410
python应用实践之boss数据获取
boos直聘,想必对于找工作的同志都非常熟悉,以其'招人快 人才多 匹配准 公开透明'等优点位居行业的前沿,今天我们就用scrapy框架配合selenium进行岗位,薪资.待遇,公司 等信息进行爬取。boss直聘网站: www.zhipin.com 我想爬取过这个网站的同学都知道他的反爬还是很讨厌的,信息都是用cookies渲染生成的,cookies时效很短,很快就失效了,快速访问还会封掉你的ip ,封了ip第一反映就使用代理吧,有时候使用代理你就会发现,会提示ip异常,然后进验证 并且需要接入接码平台了。当然这些都是在获取比较详细的信息的前提下,如果我们只是访问首先信息就没有那么大的难度了,这种情况下我们就直接加上代理IP就搞定了。不过也需要高质量的代理IP才可以,比如由亿牛云提供的隧道IP,我们可以示例下使用隧道IP获取数据的成功率是什么样的。简单示例如下:
小白学大数据
2024/06/08
1610
python下scarpy爬虫代理错误407
我们在数据采集过程中程序会经常返回一些状态码,响应HTTP请求会返回响应状态码,根据状态码可以知道返回信息代表什么意思。今天我们来分享下关于407。一般爬虫程序是不会返回407的,一般出现407是在我们程序挂了代理以后,比如我们的爬虫程序中添加了由亿牛云提供的爬虫隧道代理。但是运行后程序就报了407错误。
小白学大数据
2023/04/26
4980
python爬虫工程师就业前景
it一直以来都是属于高薪行业,是很多同学的选择方向,学习出来后在面对职业选择时难免纠结、徘徊,不知道去哪能走多远,我们没有办法只考虑当下,无视未来!假如,即便选择了目前火热的Python爬虫,那你需要先来了解一下Python的现状、发展前景以及Python的就业岗位。本文可以给你些许答案,一起来看看吧!
小白学大数据
2022/03/17
1.2K0
Scrapy框架进阶学习
之前有跟大家分享过爬虫中关于Scrapy框架的使用,今天我们再一次进阶的讲述下这个框架,在爬虫众多框架里面Scrapy 属于佼佼者。它为我们提前想好了很多步骤和要处理的边边角角的问题,而使用者可以专心于处理解析页面、分析请求这种最核心的事情。
小白学大数据
2022/04/22
3700
python在网络爬虫领域的应用
Python 作为一种功能强大的编程语言被很多人使用。那么问题来了,Python 的应用领域有哪些呢?
小白学大数据
2023/03/23
5230
数据采集-Scrapy框架使用代理IP要点
scrapy框架通过模块化的设计实现了数据采集的通用功能接口,并提供自定义拓展,它将程序员从繁冗的流程式重复劳动中解放出来,给编程人员提供了灵活简便的基础构建,对于普通的网页数据采集,编程人员只需要将主要精力投入在网站数据分析和网站反爬策略分析上,结合代理IP的使用,可以实现项目的高效快速启动。 主要特性包括: 1)参数化设置请求并发数,自动异步执行 2)支持xpath,简洁高效 3)支持自定义中间件middleware 4)支持采集源列表 5)支持独立调试,方便 shell 方式 6)支持数据管道接口定义,用户可以选择文本、数据库等多种方式 在Scrapy框架中使用代理的方式有如下几种: 1.scrapy中间件 在项目中新建middlewares.py文件(./项目名/middlewares.py),内容如下: #! -- encoding:utf-8 -- import base64 import sys import random PY3 = sys.version_info[0] >= 3 def base64ify(bytes_or_str): if PY3 and isinstance(bytes_or_str, str): input_bytes = bytes_or_str.encode(‘utf8’) else: input_bytes = bytes_or_str output_bytes = base64.urlsafe_b64encode(input_bytes) if PY3: return output_bytes.decode(‘ascii’) else: return output_bytes class ProxyMiddleware(object): def process_request(self, request, spider): # 代理服务器(产品官网 www.16yun.cn) proxyHost = “t.16yun.cn” proxyPort = “31111” # 代理验证信息 proxyUser = “username” proxyPass = “password” request.meta[‘proxy’] = “http://{0}:{1}”.format(proxyHost,proxyPort) # 添加验证头 encoded_user_pass = base64ify(proxyUser + “:” + proxyPass) request.headers[‘Proxy-Authorization’] = 'Basic ’ + encoded_user_pass # 设置IP切换头(根据需求) tunnel = random.randint(1,10000) request.headers[‘Proxy-Tunnel’] = str(tunnel) 修改项目配置文件 (./项目名/settings.py) DOWNLOADER_MIDDLEWARES = { ‘项目名.middlewares.ProxyMiddleware’: 100, } 2.scrapy环境变量 通过设置环境变量,来使用爬虫代理(Windows) C:>set http_proxy=http://username:password@ip:port
小白学大数据
2024/06/08
1K0
scrapy框架爬虫代理IP池
现在互联网技术发展进步,各种数据集中在互联网上,数据信息采集不再是手动采集,现在都是一些爬虫程序爬虫软件去采集想要的数据信息,虽然网络爬虫的确可以采集到信息,但是在采集信息的时候我们经常会遇到一些问题:一些数据明明在网站上能够显示但是自己的程序抓取不出来;有些网站设置了限制,避无可避;自己已经做好了前期的准备工作,但是自己的请求被拒绝了
用户6172015
2021/01/27
4830
python爬虫常见状态码之504错误
python爬虫请求网站然后抓取数据返回的过程之中,实际上是通过http超文本传输协议将自己的请求信息发送到了网站上等待响应,而网站响应之后就会返回状态码以及相关的数据回去。我们需要快速地对http请求返回的各种异常状态码来判断处理,以便于我们及时调整爬虫策略,优化思路,及时完成爬虫任务。
小白学大数据
2023/05/23
5460
python爬虫在情感分析领域的应用
情感分析又叫意见挖掘, 是一个研究人们对某种事物,例如产品,话题,政策的意见,情绪或者态度的领域。 随着网路上意见型数据的爆发,情感分析也被广泛研究和应用。
小白学大数据
2023/05/17
5330
Scrapy制作爬虫
编写爬虫: 通过爬虫语言框架制作一个爬虫程序 import scrapy from tutorial.items import DmozItem class DmozSpider(scrapy.Spider): name = 'dmoz' allowed_domains = ['dmoz.org'] start_urls = [ "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
用户6172015
2020/11/03
4250
Scrapy爬虫模拟登陆参考demo
对于一些刚入行爬虫的小伙伴来说,刚开始的时候觉得所有的网站无非就是分析HTML、json数据,很容易忽忽略掉一个很重要的问题,那就是目标网站的反爬虫策略,很多目标网站为了反爬虫经常更新反爬策略,我们想要拿到数据,就需要针对它们的反爬虫来制定绕过方法,比如它识别你的UserAgent,那你可能就需要伪造、它限制IP请求次数,你可能就需要限速或者改变ip、它用验证码来识别你是人是机,你就需要模拟人的操作并且正确填写它给你弹出的验证码等等。
小白学大数据
2023/06/20
3440
如何高效实现搜索引擎网页爬取
搜索引擎的普及,使得人们可以轻松地获取各种信息。但是,大多数人并不知道这些信息是如何被搜索引擎获取的。搜索引擎爬虫,也叫网络蜘蛛,是指一类自动化程序,用于按照特定算法从互联网上抓取网页,并将其存储到本地服务器上。在搜索引擎中,爬虫起到了收集信息的作用。
小白学大数据
2023/04/19
4860
python在数据分析领域的优势
如今,数据分析已经是我们生活中重要的一部分,数据分析的相关工作也越来越受到人们的青睐。在it行业,很多编程语言都可以用来做数据分析的工具,比如Python、B、Matlab等,Python凭借着自身无可比拟的优势,被广泛地应用到数据科学领域中,并成为主流语言。选择Python做数据分析,主要考虑的是Python具有以下优势。
小白学大数据
2023/06/13
5130
python如何通过分布式爬虫爬取舆情数据
作为爬虫,有时候会经历过需要爬取站点多吗,数据量大的网站,我们身边接触最频繁、同时也是最大的爬虫莫过于几大搜索引擎。今天我们来聊一个同样是站点多数据量的爬取方向,那就是舆情方向的爬虫。
小白学大数据
2023/04/06
4580
隧道转发相同请求一个IP
随着网络爬虫的增多,越来越多的人使用代理IP,从之前的传统的API代理到如今的隧道转发爬虫代理。使用代理的方式也多变化了。传统的API代理调用方式也不比多说,相信许多爬虫也都知道如何去调试API接口。其实隧道转发的爬虫代理是大家不常见的使用方式,大家都想知道如何去调用隧道转发的爬虫代理。一般网络爬虫使用Python语言偏多。我们就以python爬虫为例去调用隧道转发的爬虫代理
用户6172015
2020/11/06
9100
如何使用Scrapy框架爬取301跳转后的数据
在我们python强大的库里面,Scrapy是一个功能强大的网络爬虫框架,允许开发者轻松地抓取和解析网站内容。在爬取有些网站数据的时候会遇到网页跳转的情况,一般HTTP返回状态码是200,非200状态码,需要单独处理。Scrapy默认只处理200状态码响应,非200状态码响应需要单独设置,如301永久跳转。
小白学大数据
2023/06/14
7210
相关推荐
通过爬取豆瓣浅聊反爬策略的重要性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档