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