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编写一个每天都在系统下新建一个文件夹的脚本
May 04 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
python实现简单登陆流程的方法
Apr 22 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
pandas求两个表格不相交的集合方法
Dec 08 Python
详解python做UI界面的方法
Feb 27 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
python三大神器之fabric使用教程
Jun 10 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
python set集合使用方法解析
Nov 05 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
在Python 的线程中运行协程的方法
Feb 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
python 从远程服务器下载东西的代码
2013/02/10 Python
Python中replace方法实例分析
2014/08/20 Python
python字典序问题实例
2014/09/26 Python
Python中的条件判断语句基础学习教程
2016/02/07 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python检测网站链接是否已存在
2016/04/07 Python
Python随机数random模块使用指南
2016/09/09 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
python3 字符串知识点学习笔记
2020/02/08 Python
关于安全的演讲稿
2014/05/09 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
秦兵马俑导游词
2015/02/02 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
教师节大会主持词
2015/07/06 职场文书
公司晚会主持词
2019/04/17 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android