学习爬虫技术的主要作用就是能获取数据,很多爬虫小伙伴每天需要获取的数据量都不小,这也跟业务需求量有关系。我们在使用python采集大量数据的时候有一些方式,有需求的可以借鉴学习下。 1、先学习 Python 包并实现基本的爬虫过程,Python中爬虫的包很多,初学建议可以从requests包和Xpath包开始学习,requests包主要负责连接网站,返回网页,而Xpath用于解析网页,便于抽取数据。还有其他的一些功能强大的包可以去慢慢的了解下。 2、掌握反爬虫技术,我们在爬虫过程中一般会遇到网站封IP、动态加载或各种奇怪的验证码和userAgent访问限制等问题。这时我们就需要控制用访问频率、使用代理IP池、抓包、验证码的OCR等手段来解决。最简单的代理池的使用可以分享给大家参考下:
#! -- encoding:utf-8 --
代码语言:javascript复制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
3、数据去重,爬虫可以根据不同的场景制定不同的去重方案。比如:(1)少量数据,只有几万或者十几万条的情况,可以使用Map或Set便可;(2)中量数据,如果是几百万或者上千万,使用BloomFilter可以解决;(3)大量数据,上亿或者几十亿,Redis可以解决。以上这些只是分享,大家如果有更好的方式可以留言交流学习下。
suger今天 15:4700