爬虫爬取到空网页的解决办法和防止被封号的技巧---设置headers和proxies
文章目录
- 1. 设置headers
- 2. 设置proxies
- 3. 爬虫的技术升级过程
1. 设置headers
通过Python的requests.get(url)有时候会爬到的内容有时候是空网页。原因是网站检测到你发送的request不正常。
这时候通过设置headers参数来模拟真实浏览器发送的请求,往往能解决问题。
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}
response = requests.get(url, headers = headers)
往往设置User-Agent就可以了,获取自己的User - Agent的方式。
Chrome浏览器-F12(检查) - 点击NetWork - 按ctrl+R - 点击Name任意一项 - 查看User-Agent
另外还可以在headers中添加cookies,可能被禁止访问的概率更小。
详见: cookies
2. 设置proxies
有时候会写一些刷访问量的脚本,如果不设置proxies,每次访问请求都是来自同一ip,很容易被后台检测到。
# step1: 获取一个proxies
class get_kuaidaili_ip(): # 获取快代理免费代理ip# 尝试代理agents增强反反爬def random_agent(self):user_agents = ["Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_2 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5","Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5","MQQBrowser/25 (Linux; U; 2.3.3; zh-cn; HTC Desire S Build/GRI40;480*800)","Mozilla/5.0 (Linux; U; Android 2.3.3; zh-cn; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1","Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1 /110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413"'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50','Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11']return random.choice(user_agents)# 尝试代理IP增强反反爬def get_ip_list(self, url, headers, proxies):web_data = requests.get(url, headers=headers, proxies=proxies)soup = BeautifulSoup(web_data.text, 'lxml')ips = soup.find_all('tr')ip_list = []for i in range(1, len(ips)):ip_info = ips[i]tds = ip_info.find_all('td')ip_list.append(tds[0].text + ':' + tds[1].text)return ip_listdef get_random_ip(self, ip_list):proxy_list = []for ip in ip_list:proxy_list.append('http://' + ip)proxy_ip = random.choice(proxy_list)proxies = {'http': proxy_ip}return proxiesdef get_one(self, proxies = None):#url = 'http://www.xicidaili.com/nn/5'url = 'https://www.kuaidaili.com/free/inha/%s/' % random.randint(1, 10)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}ip_list = self.get_ip_list(url, headers=headers, proxies=proxies)# print(ip_list)return self.get_random_ip(ip_list)url = get_kuaidaili_ip()
proxies = url.get_one()step 2: 使用proxy
response = requests.get(url, headers = headers, proxies=proxies)
3. 爬虫的技术升级过程
下图的1235在笔者已经使用过,接下来可以尝试
- 多cookies
- 对付验证码
- 使用selenium
原出处:
从零学爬虫–给微信公众号阅读量作个弊:刷阅读量
爬虫爬取到空网页的解决办法和防止被封号的技巧---设置headers和proxies相关推荐
- python爬虫爬取淘宝网页
首先进行相关的分析 要想爬取相关的信息,必须指导如下信息: 1.访问接口 2.翻页操作 首先进行搜索,得到相关的网址:https://s.taobao.com/search?q=书包&imgf ...
- php 爬虫 超市,scrapy爬虫 爬取天猫进口零食网页
出于某些原因,想调戏下天猫的反爬虫机制,于是就有了这篇记录 源码已传osgit ,感兴趣可以戳下 正文开始 分析目标(items) 解析路径(xpath) 目标为天猫超市的进口商品区 研究一下待抓取网 ...
- 简单使用Python爬虫爬取淘宝网页商品信息
最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...
- python多线程爬虫 爬取多个网页_python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)...
思路 之前写过python爬取起点中文网小说,多线程则是先把爬取的章节链接存到一个列表里,然后写一个函数get_text每次调用这个函数就传一个章节链接,那么就需要调用n次该函数来获取n章的内容,所以 ...
- python多线程爬虫 爬取多个网页_Python 多线程抓取网页
最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术的实现. 1.larbin的URL去重用的很高效的bloom filter算法: 2. ...
- Python爬虫爬取动态JS网页股票信息
前期准备工作 在本例中使用的是python爬虫需要的两个基础的库,一个是requests库,另一个是BeautifulSoup库.在这里假设已经安装了这两个库,如果没有可以通过pip安装.接下来简单说 ...
- python爬取网页数据流程_Python爬虫爬取数据的步骤
爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...
- 爬取数据出现乱码的解决方法
爬虫爬取数据出现乱码的解决方法 1.网站源代码中英文全部乱码 可能的解决方法: 1)可能是编码格式不同造成的 在调用get方法后,返回的对象中有两个属性值,分别为: encoding.apparent ...
- 爬虫python的爬取步骤-Python爬虫爬取数据的步骤
爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...
最新文章
- 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来
- 刚接手的项目代码 怎么看_11.21号动态:音恋今天公告称团队刚接手这个项目没多久...
- Android应用从树莓派读取数据
- java 树 右键菜单_VUE实现Studio管理后台(八):用右键菜单contextmenu,编辑树形结构...
- 错误问题:OpenGL version to old,GLViewinitWithRect(const stdbasic_stringchar,stdchar_traitschar,stdalloca
- 主机Ping扫描自动化工具
- 【C++深度剖析教程14】经典问题解析三之关于赋值的疑问
- list 转换成datatable
- 如何将链接的服务器从SQL Server“调试”到Oracle数据库实例
- JQuery 表格拖动调整列宽效果
- linux 上安装 Node.js和npm
- 官方jdk历史版本的下载方式
- proteus中验证串联电阻分压、并联电阻分流
- 6.1 CUDA: pinned memory固定存储
- 【c语言进阶】大家是否对数据的存储不甚了解?本篇将揭开数据存储的神秘面纱*^____^*数据的存储(一)知识点讲解
- nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined问题解决
- 吃剩的苹果、长芽的土豆别扔!会有奇迹发生!
- 矢量数据下载【道路路网(公路、铁路)、水系、建筑物轮廓、地名等等】
- 用计算机弹最简单的歌,计算器也能演奏美妙音乐
- 成为一个程序员要花多长时间