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中列表和元组的相关语句和方法讲解
Aug 20 Python
python发送邮件脚本
May 22 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
pytorch自定义初始化权重的方法
Aug 17 Python
Python网络编程之使用TCP方式传输文件操作示例
Nov 01 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
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
用函数读出数据表内容放入二维数组
2006/10/09 PHP
PHP 数组基础知识小结
2010/08/20 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
javascript 自动填写表单的实现方法
2010/04/09 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
python时间日期操作方法实例小结
2020/02/06 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
Python实现数字的格式化输出
2020/08/01 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
三年大学自我鉴定
2014/01/16 职场文书
夜不归宿检讨书
2014/02/25 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
移除Selenium中window.navigator.webdriver值
2022/06/10 Python