最近一个让我帮他爬爬取豆瓣图书的一些数据,恰好已经好久没有爬数据了,今天就重温下爬虫过程并分享出来大家参考讨论下,文中我把爬取的过程按照顺序写下来,主要是留个痕迹。在文中我会把爬取数据所需的所有代码也示例出来,如果你懒得自己敲的话,可以直接复制
步骤一:添加header信息。设置header信息,模拟成浏览器或者app欺骗反爬系统,避免418。这个header我是在网上找的,如果想设置自己浏览器的header信息,请自行百度,很简单。
步骤二:获取网页信息且解析网页,我爬取的是网页是:https://book.douban.com/
步骤三:分析网页的反爬机制,经常搞爬虫的都知道豆瓣的反爬比较严,这里我主要分析了网站的随机ua,cookie,和IP限制。刚好之前购买的亿牛云代理还没有过期,这里就详细的讲解下在爬虫程序里面添加IP的过程,详细的实现示例如下:
代码语言:javascript复制#! -*- 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
步骤四:从爬虫程序中将数据一一对应的取出,并做后期的清洗,整理,分析操作后才能得到干净的数据。