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类属性的延迟计算
Oct 22 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
如何用Python合并lmdb文件
Jul 02 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
python语言元素知识点详解
May 15 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
Python实现微信小程序支付功能
Jul 25 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
Python实现自动签到脚本功能
Aug 20 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 管理系统程序中的后门
2009/08/05 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
DataFrame中的object转换成float的方法
2018/04/10 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
Python序列类型的打包和解包实例
2019/12/21 Python
python实现双色球随机选号
2020/01/01 Python
Python实现序列化及csv文件读取
2020/01/19 Python
python游戏开发的五个案例分享
2020/03/09 Python
基于keras中的回调函数用法说明
2020/06/17 Python
解决python对齐错误的方法
2020/07/16 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
经典优秀个人求职信分享
2013/12/12 职场文书
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
保密工作承诺书
2014/08/29 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
酒店开业主持词
2015/07/02 职场文书
跳高加油稿
2015/07/21 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书