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 相关文章推荐
python魔法方法-属性转换和类的表示详解
Jul 22 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
Python设计模式之原型模式实例详解
Jan 18 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
Python hashlib加密模块常用方法解析
Dec 18 Python
python3.7调试的实例方法
Jul 21 Python
python中altair可视化库实例用法
Jan 26 Python
如何通过一篇文章了解Python中的生成器
Apr 02 Python
Python 绘制多因子柱状图
May 11 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与ASP
2006/10/09 PHP
Smarty模板快速入门
2007/01/04 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
一起来写段JS drag拖动代码
2010/12/09 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
python实现抖音点赞功能
2019/04/07 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
Python绘制动态水球图过程详解
2020/06/03 Python
python如何进行矩阵运算
2020/06/05 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
以下的初始化有什么区别
2013/12/16 面试题
技校生自我鉴定
2013/12/08 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
车间质检员岗位职责
2015/04/08 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python