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牛刀小试密码爆破
Feb 03 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
Python微信公众号开发平台
Jan 25 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
对python产生随机的二维数组实例详解
Dec 13 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
opencv 阈值分割的具体使用
Jul 08 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
用python绘制樱花树
Oct 09 Python
接口自动化多层嵌套json数据处理代码实例
Nov 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正则
2006/07/07 PHP
php 读取文件乱码问题
2010/02/20 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python实现AES加密解密
2019/03/28 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
奶茶店创业计划书
2014/08/14 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
学校证明范文
2015/06/24 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书