python spider 爬虫 之 urllib系列

news2024/12/23 10:47:38

python 中 集成了 urllib

urllib

import urllib.request 

# urlopen 方法
url="url"
response =  urllib.request.urlopen(url)

print(type(response ))
print(response.read())
#  解码   字节--->字符串  decode    字符串--》字节  encode
print(response.read().decode("utf-8"))
# readline 读取一行
print(response.readline())
# 一行一行的读取 返回是列表
print(response.readlines())
#  获取状态码  200  400  500等
print(response.getcode())
# 获取headers
print(response.getheads())

# urlretrieve 方法  请求网页、图片、视频   同时下载他们
# 下载网页,下载图片 下载视频
url_page="xx"
# url:代表的下载的路径,filename 下载下来文件存储的文件的名字
urllib.request.urlretrieve(url=url_page,filename="xxx")

UA User Agent
用户代理,简称UA,它是特殊的字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本。
浏览器内核、浏览器渲染引擎、浏览器语言、浏览器插件等
在这里插入图片描述

#  https  协议 是ssl,  所以需要模拟代理
from urllib import request
heads = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
#  关键字传参
req = request.Request(url="https://www.baidu.com", data=None, headers=heads)
response = request.urlopen(req)
print(response.read().decode('utf-8'))

UnicodeEncodeError: ‘ascii’ codec can’t encode character ‘\u6211’ in position 9: ordinal not in range(128)

将汉字转换unicode 统一编码 两种方法

quote 应用场景 单个参数

①urllib.parse.quote(“中文”) 转换成unicode字符

urlencode 应用场景 多个参数的时候

②urllib.parse.urlencode({字典})

POST 请求

在这里插入图片描述

# POST 请求
from urllib import request
from urllib import parse

heads = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
url = 'https://fanyi.baidu.com/sug'
data = {
    'kw': "Ares"
}
#   encode  转换字节  post  请求,要encode编码,get  不需要encode()
new_data = parse.urlencode(data).encode('utf-8')
print(new_data)
#   Request 不需要传参数 method='post'
req = request.Request(url=url, data=new_data, headers=heads)
# 模拟浏览器向服务器发送请求
response = request.urlopen(req)
content = response.read().decode('utf-8')
print(content)
# 上面打印的json字符串,且中文为unicode编码
import json
obj = json.loads(content)
# 打印中文的json对象
print(obj)

Cookie 反爬

在这里插入图片描述

异常 HTTPError URLError

  1. HTTPError类是URLError类的子类
  2. 导入的包urllib.error.HTTPError urllib.error.URLError
  3. http报错:http错误是针对浏览器无法连接到服务器而增加出来的错误提示。引导并告诉浏览者该页是哪里出了问题
  4. 通过urllib发送请求的时候,有可能会发送失败。这个时候如果想让你的代码更加的健壮,可以通过try: except进行捕获异常。

Cookie 登录

适应场景:数据采集时,需要绕过登录,然后进入到某个页面

个人信息页面是utf-8,但还说报错了编码错误,因为并没有进入到个人信息页面,而是跳转到登录页面了,同时登录页面不是utf-8编码,所以报错

代理

Handler 处理器

在这里插入图片描述

# Handler 访问百度,获取百度源码
from urllib import request

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
url = 'https://www.baidu.com/'

# 创建request请求对象
req = request.Request(url=url,headers=headers)

# handler   build_opener   open

#  获取handler 对象
# handler = request.HTTPHandler()
# ProxyHandler  代理服务器,相当于用别的IP地址访问百度, 
proxies = {
    'http':'xxx.xx.xx.xx:port'
}
handler = request.ProxyHandler(proxies=proxies)
# 获取opener对象
opener = request.build_opener(handler)

# 调用open方法
response = opener.open(req)

content = response.read().decode('UTF-8')

print(content)

代理服务器
在这里插入图片描述
通过random.choice 在代理池中随机选择代理
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

618电商物流内卷,拼速度不是唯一底牌,还有……

每年的618大促,对于消费者来说都是一场购物盛宴,也是各个快递企业的“大练兵”。各大电商平台也纷纷铆足劲,希望能抓住此次机会增加营收。 面对电商平台和消费者需求,今年的快递电商企业在保证速度,提升服务质量的前提…

用CMake下的find_package()函数链接库

文章目录 find_package()原理案例1:为项目添加库 find_package()原理 关于find_package()函数的相关内容可参考: https://www.cnblogs.com/lidabo/p/16635249.html Cmake 会在以下的路径中寻找Config.cmake或Find.cmake文件。找到后即可执行该文件并生…

pycharm 2023 IDE 个人一些常用配置记录|输入法|中文|光标|

1. 中文 文件->设置->插件,找到这个: 2. 光标前进和后退 移除前面的配置,修改一下,改称Ctrl左键头\右箭头 然后点击确定 3.中文输入法 3.1 解决输入法有无问题 在pycharm安装目录bin下的pycharm.sh中,添加如下几行&am…

白酒回收APP开发需具备哪些功能?

开发白酒回收APP软件需要具备哪些功能呢? 1、酒品展示。白酒回收APP首页展示各种人们回收的白酒产品,还可以对白酒进行品牌分类,这样用户在回收售卖的时候可以快速找到自己需要的品牌,点击进入查看回收指南,一步…

中国葡萄酒 当惊世界殊 宁夏贺兰山东麓葡萄酒亮相首都地铁

近日,宁夏贺兰山东麓葡萄酒以“中国葡萄酒 当惊世界殊、中国酒庄酒 天赋贺兰山”为宣传主题的宁夏贺兰山东麓葡萄酒宣传专列(列车车号:01055)亮相北京地铁1号线。该专列将从4月7日至7月6日持续开行3个月,平均每天往返穿…

Snipaste下载

官网: Snipaste 下载 解压 在桌面右下角状态栏中可以找到软件图标, 如图所示,已经运行成功 鼠标右键点击该图标,选择首选项可以设置相关功能选项。 设置了开机自启 最后将该文件夹放到合适的路径下,重新双击运行Snipa…

计算物理专题:薛定谔方程的有限元解法

计算物理专题:薛定谔方程的有限元解法 简单边值问题的有限元解法 其中:都是上已知的连续函数,且也连续, 等价性定理 如果y(x)是边值问题(1)的解,则y(x)是\mu 中使得泛函I(z)取极小值的函数;反正&#xff0c…

【面试题系列】关于K8s—Job的2个问题

序言 人生是一场消耗,要把美好的时光放在喜欢的人与事上。 写在前面 前面学习了job,现在思考一下两个问题 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标…

only up 游戏分析

文章目录 介绍游戏玩法游戏面向的群体游戏所须配置游戏美术风格游戏优点游戏缺点和改进方案游戏爆火原因分析同类型游戏对比和游戏继承性地铁跑酷掘地求升跳跳乐 总结 介绍 游戏玩法 这是一个玩法很简单的跑酷游戏,你必须找到一条可行的道路,一直往上走…

【C++】哈希的应用

文章目录 一、位图1. 位图的引入2. 位图的实现3. 位图的应用4. 哈希切割 二、布隆过滤器1. 布隆过滤器的引入2. 布隆过滤器的实现3. 布隆过滤器的应用4. 布隆过滤器的总结 一、位图 1. 位图的引入 我们先来看一道面试题: 给40亿个不重复的无符号整数,没…

vue项目用iframe嵌入另外一个vue项目(cesium)

vue项目用iframe 项目嵌入另外一个vue项目,主要分2种情况,一种情况是嵌入本地项目,另外一种是嵌入用web服务器启动的vue项目。 1)嵌入本地项目 vue create hello-world 创建项目后, 用npm run build打包,把…

IPO观察丨健身器材行业加“数”前行,康力源如何重构竞争壁垒?

近年来,健身器材市场的火热,引来了资本的广泛关注。数据显示,2021年中国健身器材市场规模为546.5亿元,同比增长15%,预计2024年或可达到799.6亿元。在这股浪潮之下,多家健身器材企业递出了IPO申请。比如&…

安装mmdetection(windows下)

windows环境安装mmdetection 创建pytorch环境最终安装的版本信息安装过程step1:安装mmcv-fullstep2:安装mmdetection 创建pytorch环境 mmdetection是基于PyTorch、CUDA环境来安装的,所以首先得安装深度学习pytorch环境、参考我的这篇pytorch…

基于企业微电网平台的食用菌工厂的能源管理

摘要:从食用菌生产经营者角度指出食用菌工厂化生产的产品生鲜属性、微生物培养的技术特点和竞争战略难以突破决定了成本控制是经营的核心。分析食用菌生产的成本构成,指出加强能源管理是节本增效的重要途径,从电费的分类和改善方式、灭菌的燃…

JDK的安装配置

MySQL的安装下载已经有很多码友阅读和提出意见,谢谢大家的肯定和批评,如下给出JDK的安装配置,如有帮助,点赞收藏加关注,如有不足或者错误,敬请批评指正!! 一、下载JDK 1、Oracle官网…

别百度了,低代码开发平台我推荐它

“低代码开发平台”指的是一种用于快速设计和开发软件系统,且手写代码量最少的方法,它可以帮助您更快、更可靠地提供价值。 随着疫情的发生,低代码平台在最近两年都成为互联网界的新宠,那为何会如此受欢迎呢?主要有以下…

MySQL主备延迟的原因

MySQL主备延迟的原因 在上篇文章中记录了一次由主备延迟导致的relay log打满磁盘的问题,结合林奇大佬的《MySQL是怎么保证高可用的?》,分析一下主备延迟的原因。 主备同步 主库和备库之间的同步流程如图所示: 在备库B 上通过c…

人脸考勤签到基础篇

目录 创建小程序底部Tab导航 开通腾讯云对象存储服务 一、静态资源要放在网上 二、为什么不选择阿里云或者华为云的对象存储服务? 二、开通腾讯云对象存储服务 三、存储静态资源 设计首页的英雄区和栏目导航 设计人脸签到页面 实现签到自拍功能 缓存系统常…

HTTP调用:你考虑到超时、重试、并发了吗?

今天,我们一起聊聊进行 HTTP 调用需要注意的超时、重试、并发等问题。 与执行本地方法不同,进行 HTTP 调用本质上是通过 HTTP 协议进行一次网络请求。网络请求必然有超时的可能性,因此我们必须考虑到这三点: 首先,框架…

单例模式(Singleton)

定义 单例是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。 前言 1. 问题 单例模式同时解决了两个问题,所以违反了单一职责原则: 保证一个类只有一个实例。为该实例提供一个全局访问节…