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基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
Python中的ceil()方法使用教程
May 14 Python
Python同时向控制台和文件输出日志logging的方法
May 26 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
python实现k-means聚类算法
Feb 23 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
Python远程视频监控程序的实例代码
May 05 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
Python 如何创建一个线程池
Jul 28 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 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
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
Python测试模块doctest使用解析
2019/08/10 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
公司成立感言
2014/01/11 职场文书
探亲假请假条
2014/04/11 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS