深入浅出爬虫要点
或者脚本。它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成部分。
爬虫的工作原理:
(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.text3、网络爬虫需要注意的问题:
如何处理js生成的cookie
可以使用无头浏览器获取大量cookie,存储后备用。
如何控制频率和利用代理破除反爬限制
53612.html
pythonwindows相关文章
- python实现简单爬虫功能[通俗易懂]
- Python爬虫:逆向分析某酷音乐请求参数
- 搞笑视频爬虫
- Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)
- Python爬取美女图片 爬虫基础
- Python 爬虫进阶必备 | 某网络广播电视台 header 加密参数逻辑分析
- Python分布式爬虫框架Scrapy 打造搜索引擎(四) - 爬取博客网站
- Scrapy08:Deltafetch,让爬虫有了记忆
- 爬虫练习题(一)
- 【k哥爬虫普法】非法入侵计算机信息系统,获取1500万余条个人信息!
- Golang爬虫之goquery
- Python爬虫:requests的headers该怎么填
- python数据分析实例:利用爬虫获取数据
- GitHub最最最火的开源爬虫工具箱,一爬就取
- Go语言圣经–并发的web爬虫详解编程语言
- Go语言网络爬虫概述
- 深入浅出:使用SQL Server爬虫实现数据挖掘(sqlserver爬虫)
- 爬虫搭建Redis连接桥,实现更高效率(爬虫连接redis方式)
- 利用Redis实现精准爬虫去重(爬虫用redis去重)