Python 深入浅出爬虫要点

laical1 · 2020年05月19日 · 137 次阅读

网络爬虫又被称为网页蜘蛛、网络机器人或网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成部分。 爬虫的工作原理: (1)选取一部分精心挑选的种子 URL。 (2)将这些 URL 放入待抓取 URL 队列。 (3)从待抓取 URL 队列中取出待抓取的 URL,解析 DNS 并且得到主机的 IP,将 URL 对应的网页下载下来,存储进已下载的网页库中。此外,将这些 URL 放进已抓取的 URL 队列。 (4)分析已抓取的 URL 队列中的 URL,然后解析其他 URL,并且将 URL 放入待抓取的 URL 队列,从而进入下一个循环。 有了网络爬虫,当然网站也会做反爬虫机制,那什么是爬虫和反爬虫呢?一张图说明一切: 如何解决反爬虫: 1、 通过 User-Agent 来控制访问: 无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers,比如知乎的 requests headers headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.1276.73 Safari/537.36', 'Referer':'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=nike'} response = requests.get(url=url, headers=headers) 有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上 User-Agent,表明你是浏览器访问即可。有时还会检查是否带 Referer 信息还会检查你的 Referer 是否合法,一般再加上 Referer。 User-Agent 可以用亿牛云提供给的真实库,Referer 的来源可以伪装成百度搜索来的。 2、 使用代理 适用情况:大部分网站均限制了 IP 的访问量 对于 “频繁点击” 的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。 解决方法: 使用爬虫 IP 代理池,就是通过 ip 代理,从不同的 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 3、 网络爬虫需要注意的问题: • 如何处理 js 生成的 cookie 可以使用无头浏览器获取大量 cookie,存储后备用。 • 如何控制频率和利用代理破除反爬限制

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册