Python爬虫网络请求之代理服务器和动态Cookies


Posted in Python onApril 12, 2022

1.IP代理

某些网站会检测一段时间内某IP的访问次数,若访问次数过多会禁止访问,这时需要设置一些代理服务器,每隔一段时间换一个代理。IP代理的分类:

  • ①透明代理:目标网站可以得知使用了代理以及源IP地址,显然这不符合要求;
  • ②匿名代理:目标网站知道使用了代理,但不知道源IP地址;
  • ③高匿代理:最保险的方式,目标网站既不知道使用了代理,也不知道源IP地址。

2.Cookie

解决http的无状态性,第一次向服务器发送请求时,服务器生成Cookie作为请求头并储存到浏览器中;浏览器再次发送请求时将携带Cookie信息。

import urllib.request
from http import cookiejar
filename = 'cookie.txt'
#获取Cookie
def get_cookie():
    #实例化一个MozillaCookieJar用于存储cookie
    cookie = cookiejar.MozillaCookieJar(filename)
    #创建handler对象
    handler = urllib.request.HTTPCookieProcessor(cookie)
    #创建opener对象
    opener = urllib.request.build_opener(handler)
    #请求网址
    url = 'https://tieba.baidu.com/index.html?traceid=#'
    resp = opener.open(url) #发送请求
    #存储cookie文件
    cookie.save()
 
#读取cookie
def use_cookie():
    #实例化MozillaCookieJar
    cookie = cookiejar.MozillaCookieJar()
    #加载cookie文件
    cookie.load(filename)
    print(cookie)
 
get_cookie()
use_cookie()

3.异常处理 

①urllib.error.URLError:用于捕获由urllib.request产生的异常,使用reason属性返回错误原因

import urllib.request
import urllib.error
 
url = 'http://www.google.com'
try:
    resp = urllib.request.urlopen(url)
except urllib.error.URLError as e:
    print(e.reason)

输出结果:

[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

②urllib.error.HTTPError:用于处理HTTP与HTTPS请求的错误,

有三个属性:

  • code:请求返回的状态码
  • reason:返回错误的原因
  • headers:请求返回的响应头信息
import urllib.request
import urllib.error
 
url = 'https://movie.douban.com/'
try:
    resp = urllib.request.urlopen(url)
except urllib.error.HTTPError as e:
    print('原因:',e.reason)
    print('响应状态码:',str(e.code))
    print('响应头数据:',e.headers)

Python爬虫网络请求之代理服务器和动态Cookies

到此这篇关于Python爬虫之网络请求的文章就介绍到这了!

Python 相关文章推荐
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
对python3 urllib包与http包的使用详解
May 10 Python
python opencv读mp4视频的实例
Dec 07 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
Python2与Python3的区别实例总结
Apr 17 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
如何在mac下配置python虚拟环境
Jul 06 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
分享Python异步爬取知乎热榜
尝试使用Python爬取城市租房信息
Apr 12 #Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 #Python
Python实现批量将文件复制到新的目录中再修改名称
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 #Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 #Python
Python闭包的定义和使用方法
Apr 11 #Python
You might like
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python的pygame安装教程详解
2020/02/10 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
String这个类型的class为何定义成final?
2012/11/13 面试题
汽车驾驶求职信
2013/10/25 职场文书
体育教师求职信
2014/05/24 职场文书
项目转让协议书
2014/10/27 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
Java基础——Map集合
2022/04/01 Java/Android
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技