文章目录

  • 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相关推荐

  1. python爬虫爬取淘宝网页

    首先进行相关的分析 要想爬取相关的信息,必须指导如下信息: 1.访问接口 2.翻页操作 首先进行搜索,得到相关的网址:https://s.taobao.com/search?q=书包&imgf ...

  2. php 爬虫 超市,scrapy爬虫 爬取天猫进口零食网页

    出于某些原因,想调戏下天猫的反爬虫机制,于是就有了这篇记录 源码已传osgit ,感兴趣可以戳下 正文开始 分析目标(items) 解析路径(xpath) 目标为天猫超市的进口商品区 研究一下待抓取网 ...

  3. 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...

  4. python多线程爬虫 爬取多个网页_python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)...

    思路 之前写过python爬取起点中文网小说,多线程则是先把爬取的章节链接存到一个列表里,然后写一个函数get_text每次调用这个函数就传一个章节链接,那么就需要调用n次该函数来获取n章的内容,所以 ...

  5. python多线程爬虫 爬取多个网页_Python 多线程抓取网页

    最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术的实现. 1.larbin的URL去重用的很高效的bloom filter算法: 2. ...

  6. Python爬虫爬取动态JS网页股票信息

    前期准备工作 在本例中使用的是python爬虫需要的两个基础的库,一个是requests库,另一个是BeautifulSoup库.在这里假设已经安装了这两个库,如果没有可以通过pip安装.接下来简单说 ...

  7. python爬取网页数据流程_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  8. 爬取数据出现乱码的解决方法

    爬虫爬取数据出现乱码的解决方法 1.网站源代码中英文全部乱码 可能的解决方法: 1)可能是编码格式不同造成的 在调用get方法后,返回的对象中有两个属性值,分别为: encoding.apparent ...

  9. 爬虫python的爬取步骤-Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

最新文章

  1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来
  2. 刚接手的项目代码 怎么看_11.21号动态:音恋今天公告称团队刚接手这个项目没多久...
  3. Android应用从树莓派读取数据
  4. java 树 右键菜单_VUE实现Studio管理后台(八):用右键菜单contextmenu,编辑树形结构...
  5. 错误问题:OpenGL version to old,GLViewinitWithRect(const stdbasic_stringchar,stdchar_traitschar,stdalloca
  6. 主机Ping扫描自动化工具
  7. 【C++深度剖析教程14】经典问题解析三之关于赋值的疑问
  8. list 转换成datatable
  9. 如何将链接的服务器从SQL Server“调试”到Oracle数据库实例
  10. JQuery 表格拖动调整列宽效果
  11. linux 上安装 Node.js和npm
  12. 官方jdk历史版本的下载方式
  13. proteus中验证串联电阻分压、并联电阻分流
  14. 6.1 CUDA: pinned memory固定存储
  15. 【c语言进阶】大家是否对数据的存储不甚了解?本篇将揭开数据存储的神秘面纱*^____^*数据的存储(一)知识点讲解
  16. nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined问题解决
  17. 吃剩的苹果、长芽的土豆别扔!会有奇迹发生!
  18. 矢量数据下载【道路路网(公路、铁路)、水系、建筑物轮廓、地名等等】
  19. 用计算机弹最简单的歌,计算器也能演奏美妙音乐
  20. 成为一个程序员要花多长时间

热门文章

  1. 【联考第一场2018.10.20】
  2. 【python语法】字符串常用函数
  3. 接口多态的综合案例——笔记本电脑
  4. 聊城大学计算机专业学好,计算机专业热门院校推荐:聊城大学
  5. JSP和HTML的区别
  6. display属性详解及用法
  7. 二维数组作为函数参数问题
  8. JavaScript对象的深拷贝
  9. 欧几里得几何(8)Theta
  10. UE4离远之后,远处的物体阴影消失了的解决方法