python 爬虫出现403禁止访问错误详解


Posted in Python onMarch 11, 2017

python 爬虫解决403禁止访问错误

在Python写爬虫的时候,html.getcode()会遇到403禁止访问的问题,这是网站对自动化爬虫的禁止,要解决这个问题,需要用到python的模块urllib2模块

urllib2模块是属于一个进阶的爬虫抓取模块,有非常多的方法,比方说连接url=//3water.com/qysh123对于这个连接就有可能出现403禁止访问的问题

解决这个问题,需要以下几步骤:

<span style="font-size:18px;">req = urllib2.Request(url) 
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36") 
req.add_header("GET",url) 
req.add_header("Host","blog.csdn.net") 
req.add_header("Referer","//3water.com/")

其中User-Agent是浏览器特有的属性,通过浏览器查看源代码就可以查看到

然后

html=urllib2.urlopen(req)


print html.read()

就可以把网页代码全部下载下来,而没有了403禁止访问的问题。

对于以上问题,可以封装成函数,供以后调用方便使用,具体代码:

#-*-coding:utf-8-*- 
 
import urllib2 
import random 
 
url="//3water.com/article/1.htm" 
 
my_headers=["Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36", 
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36", 
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0" 
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14", 
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)" 
  
] 
def get_content(url,headers): 
 ''''' 
 @获取403禁止访问的网页 
 ''' 
 randdom_header=random.choice(headers) 
 
 req=urllib2.Request(url) 
 req.add_header("User-Agent",randdom_header) 
 req.add_header("Host","blog.csdn.net") 
 req.add_header("Referer","//3water.com/") 
 req.add_header("GET",url) 
 
 content=urllib2.urlopen(req).read() 
 return content 
 
print get_content(url,my_headers)

其中用到了random随机函数,自动获取已经写好的浏览器类型的User-Agent信息,在自定义函数中需要写出自己的Host,Referer,GET信息等,解决这几个问题,就可以顺利访问了,不再出现403访问的信息。

当然如果访问频率过快的话,有些网站还是会过滤的,解决这个需要用到代理IP的方法。。。具体的自己解决

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
用Python给文本创立向量空间模型的教程
Apr 23 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
Python 登录网站详解及实例
Apr 11 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
Python制作词云图代码实例
Sep 09 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
python add_argument()用法解析
Jan 29 Python
Python常用数字处理基本操作汇总
Sep 10 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
Python如何读取MySQL数据库表数据
Mar 11 #Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 #Python
Python搭建HTTP服务器和FTP服务器
Mar 09 #Python
开源Web应用框架Django图文教程
Mar 09 #Python
Python运算符重载详解及实例代码
Mar 07 #Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 #Python
python下os模块强大的重命名方法renames详解
Mar 07 #Python
You might like
让你的网站首页自动选择语言转跳
2006/12/06 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
php设计模式之单例模式代码
2016/06/11 PHP
laravel学习教程之存取器
2016/07/30 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
详解php协程知识点
2018/09/21 PHP
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
js+html制作简单验证码
2017/02/16 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
vue组件学习教程
2017/09/09 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
vue利用axios来完成数据的交互
2018/03/23 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Python中is和==的区别详解
2018/11/15 Python
python检测IP地址变化并触发事件
2018/12/26 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
海外淘书首选:AbeBooks
2017/07/31 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
毕业学生推荐信
2013/12/01 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
初中班干部工作总结
2015/08/10 职场文书
MySQL学习之基础命令实操总结
2022/03/19 MySQL
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL