python spider 爬虫 之 urllib系列 urlretrieve下载照片、视频 网页

news2024/10/2 8:37:11

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/686627.html

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

相关文章

腾讯课堂Python课程哪家强?

腾讯课堂Python课程哪家强? 文章目录 腾讯课堂Python课程哪家强?一、前言二、数据读取和数据预处理1、数据读取2、数据处理 三、有多少人愿意花钱学Python?四、多少价位的课买的人最多?五、哪家机构的课最多?销量最好&…

来评选你心中的TOP1编程语言

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

WEBGIS系统数据库设计

文章目录 系统设备模型设计1 .设备模型结构2. 设备逻辑关系模型系统属性数据库设计1 . 系统属性数据库2 . 实体继承关系1) 电气实体部分2 )土建实体部分3 )其他实体联系 系统采用PostgreS QL 作为属性数据库, PostGIS 作为空间数据库&#xf…

CENTOS上的网络安全工具(二十六)SPARK+NetSA Security Tools容器化部署(2)

〇、抓包与批量转换cap文件 1. Network Monitor 抓包 我们在CENTO OS上的网络安全工具(十七)搭建Cascade的Docker开发环境中捎带脚介绍了以下windows下的抓包软件。大意就是微软又一款不错的抓包分析软件,名曰nmcap,可在Download …

MySQL——备份与恢复

文章目录 MySQL 完全备份物理冷备份与恢复mysqldump 备份与恢复 MySQL 完全恢复MySQL 增量备份与恢复MySQL 增量备份MySQL 增量恢复 MySQL 完全备份 InnoDB存储引擎的数据库在磁盘上存储成三个文件:db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件…

FPGA解码 4K MIPI 视频 纯vhdl实现 CSI2 RX 采集OV13850,提供工程源码和技术支持

目录 1、前言2、Xilinx官方主推的MIPI解码方案3、本方案的性能及其优越性4、我这里已有的 MIPI 编解码方案5、vivado工程介绍6、上板调试验证7、福利:工程代码的获取 1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解…

本地部署开源大模型的完整教程:LangChain + Streamlit+ Llama

在过去的几个月里,大型语言模型(llm)获得了极大的关注,这些模型创造了令人兴奋的前景,特别是对于从事聊天机器人、个人助理和内容创作的开发人员。 大型语言模型(llm)是指能够生成与人类语言非常相似的文本并以自然方式理解提示的机器学习模型…

【FreeRTOS】Arduino开发STM32

0.开发环境(工具) Vscode 、platformio、arduino、STM32F103C8T6、USB-TTL 引脚连接:STM32直接设置为烧录模式即可,烧录完成后会自动运行程序。 1.点灯加串口输出调试 注意事项:每次上传程序前,需要按一下复位键。 #include &…

【Linux】2、文件系统、Rootfs

文章目录 一、文件系统二、Rootfs2.1 各目录约定2.1.1 /bin4.2 /boot4.3 /dev4.4 /etc4.5 /home4.6 /lib4.7 /media4.8 /mnt4.9 /opt4.10 /root4.11 /run4.12 /sbin4.13 /srv4.14 /tmp4.15 /usr4.16 /var 一、文件系统 Linux 的文件系统遵循 HFS 设计,有如下实现&a…

浅谈充电桩监控系统的必要性

关注acrelzxz,了解更多详情 摘要:针对当前电动汽车续航能力严重不足以及不能及时充电的问题,将电力电子变流技术、智能监控技术、REIP无线射频技术及CAN总线技术应用到电动汽车智能充电桩的设计与研究中。开展了无人值守的智能电动车充电桩的…

Android 使用webView打开网页可以实现自动播放音频

使用webview 自动播放音视频,场景如,流媒体自动部分,音视频通话等。会出现如下问题: 解决方案如下: 配置webview 如下,这样可以自动播放音频。 webView.getSettings().setMediaPlaybackRequiresUserGestur…

如何从视频里面提取音频,这4个方法非常好用!

今天,我要介绍4种提取视频中音频的方法,每一种都非常简单方便,让你轻松获取视频中的音频! 1.音视频分离 这是最简单直接的方法之一,你可以使用视频编辑软件将视频导入,并对其进行音频分离,就可…

[Spring Boot Starter系列]Spring Boot自动装配原理

目录 一、介绍 二、Spring Boot实现自动装配的简单流程(基于2.3.5.RELEASE版本) 三、总结 一、介绍 什么是Spring Boot的自动装配? 以下描述部分来自Spring Boot官网: Spring Boot自动配置尝试根据您添加的jar依赖项自动配置您…

《kafka 核心技术与实战》课程学习笔记(八)

无消息丢失配置怎么实现? Kafka 只对“已提交”的消息(committed message)做有限度的持久化保证。 第一个核心要素是“已提交的消息”。 当 Kafka 的若干个 Broker 成功地接收到一条消息并写入到日志文件后,它们会告诉生产者程序…

机器学习4:基本术语

机器学习涉及很多专业术语,为了避免混淆概念,我们在学习中,首先必须统一语言:即充分理解专业术语,并采用专业术语来描述机器学习相关的内容。本节将介绍几种基本的机器学习术语。 目录 1.标签 2.特征 3.示例 4.模…

shardingjdbc入门-自问自答

1:shardingjdbc 是什么,它能做什么,解决了什么问题? 现实的问题是mysql单表存储是有上线的,因为mysql采用的是 B 树类型的索引,在数据量超过阈值的时候,索引的持续变大,会导致访问磁盘的IO次数增…

【永久服务器】EUserv

1. 请先自行准备网络(我用的伦敦还可以)、以及visa卡,淘宝可以代付,我总共花了97人民币(10.94欧代付费) 现在只能申请一台,多了会被删除,也就是两欧元,然后选择visa卡 选…

正版软件 | RadiAnt DICOM Viewer - 医学图像的PACS DICOM浏览器

辐射蚂蚁DICOM查看器 2023.1 最新版。 新增功能: 长度比计算。椭球体/子弹体积计算。添加了在 DICOM 标记窗口中将特定项目着色和/或固定到顶部的选项。 改进和错误修复: 使用多个关键字(用 |) 分隔)搜索本地存档。…

0基础学习VR全景平台篇第49篇:高级功能-自定义LOGO

功能位置示意 一、本功能将用在哪里? 自定义logo功能,可以在全景作品中自定义植入商企logo,让全景自带推广属性,使宣传效果事半功倍。 备注:不同皮肤自定义logo显示位置不同。 点击这里 查看案例 二、如何使用本功能…

智云通CRM:引领企业数字化转型的利器

在如今的商业竞争中,客户管理是企业成功的关键因素之一。然而,传统的客户管理方式已经无法满足企业日益增长的需求,企业需要一个强大的工具来帮助他们更好地管理客户关系,并实现数字化转型。智云通CRM系统作为最佳解决方案&#x…