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 yield使用方法示例
Dec 04 Python
Python多进程机制实例详解
Jul 02 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
运动检测ViBe算法python实现代码
Jan 09 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
python中的数据结构比较
May 13 Python
Python列表的切片实例讲解
Aug 20 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
python编写俄罗斯方块
Mar 13 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
Keras之fit_generator与train_on_batch用法
Jun 17 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中改变图片的尺寸大小的代码
2011/07/17 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
南京某公司笔试题
2013/01/27 面试题
幼师自荐信
2013/10/26 职场文书
文秘专业毕业生就业推荐信
2013/11/08 职场文书
少先队入队活动方案
2014/02/08 职场文书
办理信用卡工作证明
2014/09/30 职场文书
KTV员工管理制度
2015/08/06 职场文书
防溺水主题班会教案
2015/08/12 职场文书