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中的五种异常处理机制介绍
Sep 02 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
Python编程之string相关操作实例详解
Jul 22 Python
python 多线程重启方法
Feb 18 Python
Python数据类型之Dict字典实例详解
May 07 Python
Django models.py应用实现过程详解
Jul 29 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
django 扩展user用户字段inlines方式
Mar 30 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
PyMongo 查询数据的实现
Jun 28 Python
Python find()、rfind()方法及作用
Dec 24 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 microtime获取浮点的时间戳
2010/02/21 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
img的onload的另类用法
2008/01/10 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
常务副总经理岗位职责
2014/04/12 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
政审证明范文
2015/06/19 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
部分武汉产收音机展览
2022/04/07 无线电