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操作摄像头截图实现远程监控的例子
Mar 25 Python
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python中对列表排序实例
Jan 04 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
php中session使用示例
2014/03/29 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
javascript 禁止复制网页
2009/06/11 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
python赋值操作方法分享
2013/03/23 Python
Python SQLite3数据库操作类分享
2014/06/10 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
python写一个md5解密器示例
2018/02/23 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
销售团队口号大全
2014/06/06 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Python关于OS文件目录处理的实例分享
2021/05/23 Python
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL