浏览 499 次
锁定老帖子 主题:爬虫进阶之提高爬虫效率的方式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2022-05-17
大家马上想到的办法就是让爬虫可以 7×24 小时不间断工作,我们能做的就是多叫几个爬虫一起来爬数据,这样便可大大提升爬虫的效率。但在介绍Python 如何让多个爬虫一起爬取数据之前,我想先为大家介绍一个概念——并发。我们用 requests 成功请求一个网页,实际上 requests 做了三件事:1、根据链接、参数等组合成一个请求;2、把这个请求发往要爬取的网站,等待网站响应;3、网站响应后,把结果包装成一个响应对象方便我们使用。所以我们可以根据需求增加并发来达到提高爬虫效率。 还有就是在访问目标网站的过程中我们也会遇到反爬机制,也是会阻碍我们的爬虫效率,这样的情况下我们只有通过添加代理IP来解决,而且如果我们需要采集更多的数据量,就需要更多的IP池支持。IP池的使用这里我们简单的示例下: #! -*- encoding:utf-8 -*- import requests import random # 要访问的目标页面 targetUrl = "http://httpbin.org/ip" # 要访问的目标HTTPS页面 # targetUrl = "https://httpbin.org/ip" # 代理服务器(产品官网 www.16yun.cn) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理验证信息 proxyUser = "username" proxyPass = "password" proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host" : proxyHost, "port" : proxyPort, "user" : proxyUser, "pass" : proxyPass, } # 设置 http和https访问都是用HTTP代理 proxies = { "http" : proxyMeta, "https" : proxyMeta, } # 设置IP切换头 tunnel = random.randint(1,10000) headers = {"Proxy-Tunnel": str(tunnel)} resp = requests.get(targetUrl, proxies=proxies, headers=headers) print resp.status_code print resp.text 还有一种方式可以提高我们的爬虫效率,那就是我们可以使用多线程爬虫,但是这里需要考虑到被爬网站的性能和其反爬机制,我们也不应该让机器过快地去运行爬虫,线程的数量也是需要有一定限制的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |