尚硅谷爬虫note004

一、urllib库

1. python自带,无需安装

# _*_ coding : utf-8 _*_
# @Time : 2025/2/11 09:39
# @Author : 20250206-里奥
# @File : demo14_urllib
# @Project : PythonProject10-14#导入urllib.request
import  urllib.request#使用urllib获取百度首页源码
#1.定义一个url:需要访问的地址
url = "http://www.baidu.com"
#2.模拟浏览器向服务器发送请求
#3.导入urllib.request
response = urllib.request.urlopen(url)#4.获取响应中的页面源码
#read()方法返回的是字节形式的二进制内容
# content = response.read()# 解码: 将二进制数据转成字符串
#decode方法
content = response.read().decode("utf-8")#5.打印数据
print(content)

2. 1个类型,6个方法

2-1)1个类型

response = urllib.request.urlopen(url)#1个类型和6个方法
# print(type(response))

HTTPResponse类型

  

      

2-2)6个方法

2-2-1)read()

#一个字节一个字节的读取
content = response.read()
print(content)
#返回多少个字节。(5)——5个
content = response.read(5)
print(content)

 2-2-2)readline()

#读取一行
content = response.readline()print(content)

  2-2-3)readlines()

#读取多行
content = response.readlines()print(content)

2-2-4)response.getcode()

# 获取状态码
print(response.getcode())

2-2-5)response.geturl()

# 返回url地址
print(response.geturl())

2-2-6)response.getheaders()

#获取状态信息3
print(response.getheaders())

二、 url下载

1. 下载网页(xx.html)

#1. 下载网页
url_page = "http://www.baidu.com"
#url:下载的路径 ,filename:下载的文件名
urllib.request.urlretrieve(url_page,"baidu.html")

2. 下载图片(xx.jpg)

# 2. 下载图片
url_img = "https://img2.baidu.com/it/u=872152568,3550679156&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=667"
urllib.request.urlretrieve(url = url_img,filename="meiduan.jpg")

3. 下载视频(xx.mp4)


# 下载视频
url_video = "https://f.video.weibocdn.com/o0/vsYwMHCVlx08lDCdVqAE01041200QVNm0E010.mp4?label=mp4_720p&template=1278x720.25.0&media_id=5129605300813840&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&ps=3lckmu&uid=3ZoTIp&ab=,15568-g4,8012-g2,8013-g0,3601-g36,3601-g36,3601-g37,3601-g37&Expires=1739332655&ssig=pMM%2F7nCPyN&KID=unistore,video"urllib.request.urlretrieve(url = url_video,filename="jingtian.mp4")

三、请求对象的定制

1. user-agent(U-A反扒)

# _*_ coding : utf-8 _*_
# @Time : 2025/2/12 11:11
# @Author : 20250206-里奥
# @File : demo17_qingqiuduixaingdedingzhi
# @Project : PythonProject10-14
import urllib.request#字典--headers
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
}url = "https://www.baidu.com"# urlopen()方法中不能存储字典,所以headers不能传递进去。——》请求对象定制
# 因为参数顺序的问题,不能直接写url和headers,中间还有一个data,所以需要关键字传参
request = urllib.request.Request(url = url,headers = headers)response = urllib.request.urlopen(request)
content = response.read().decode("utf-8")print(content)
#url的组成:大致6部分: 1.协议; 2.主机; 3.端口号; 4.路径; 5. 参数; 6.锚点...

 # 因为参数顺序的问题,不能直接写url和headers,中间还有一个data,所以需要关键字传参

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

老WinForm中一个执行文件使用SQLite数据库

EF6在老WinForm中停止更新了,但如果只是在win10上面使用,老的.net Framework 4.8框架有一个优势,编译后的执行文件很小。还有一些老类库也只能在老的.net Framework 4.8框架使用,所以微软还是保留了老的.net Framework 4.8框架。 …

diff算法简析

diff算法的核心目的是用最少的步骤找出新旧节点的差异,从而更新视图。 diff算法是一种通过同层的树节点进行比较的高效算法,探讨的是虚拟DOM树发生变化后,生成DOM树更新补丁的方式。对比新旧两株虚拟DOM树的差异,将更新补丁作用于…

19.3 连接数据库

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 ​​​​​​​需要北风数据库的请留言自己的信箱。 连接数据库使用OleDbConnection(数据连接)类&#xff…

Redis实现分布式锁

一、使用分布式锁的背景是什么 1、如果你公司的业务,各个应用都只部署了一台机器,那么完全用不着分布式锁,直接使用Java的锁即可 2、可是当你们的业务量大,多台机器并发情况下争夺一个资源的时候,就必须要保证业务的…

变化检测相关论文可读list

一些用得上的: 遥感变化检测常见数据集https://github.com/rsdler/Remote-Sensing-Change-Detection-Dataset/ 代码解读:代码解读 | 极简代码遥感语义分割,结合GDAL从零实现,以U-Net和建筑物提取为例 对本list的说明:…

docker 逃逸突破边界

免责声明 本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。 作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何…

cv2.Sobel

1. Sobel 算子简介 Sobel 算子是一种 边缘检测算子,通过对图像做梯度计算,可以突出边缘。 Sobel X 方向卷积核: 用于计算 水平方向(x 方向) 的梯度。 2. 输入图像示例 假设我们有一个 55 的灰度图像,像素…

网络编程 day3

思维导图 以select函数模型为例 思维导图2 对应 epoll模型 应使用的函数 题目 使用epoll函数实现 两个客户端 通过服务器 实现聊天 思路 在原先代码基础上 实现 服务器 发向 客户端 使用客户端在服务器上的 套接字描述符 实现 客户端 接收 服务器…

Java 同步锁性能的最佳实践:从理论到实践的完整指南

目录 一、同步锁性能分析 (一)性能验证说明 1. 使用同步锁的代码示例 2. 不使用同步锁的代码示例 3. 结果与讨论 (二)案例初步优化分析说明 1. 使用AtomicInteger原子类尝试优化分析 2. 对AtomicInteger原子类进一步优化 …

Mac之JDK安装

Mac之JDK安装 一.安装 jdk 打开终端输入命令:java -version 查看是否已安装 JDK Oracle 官方下载地址 根据自己Mac 系统安装 查看 Mac 系统,打开中断命令,输入: uname -a Compressed Archive 是压缩文档,下载的是一个 .tar.gz 压缩包 D…

[MySQL]5-MySQL扩展(分片)

随着数据量和用户量增加,MySQL会有读写负载限制。以下是部分解决方案 目录 功能拆分 使用读池拓展读(较复杂) 排队机制 🌟分片拓展写 按业务或职责划分节点或集群 大数据集切分 分片键的选择 多个分片键 跨分片查询 资料…

芯盾时代数据安全产品体系,筑牢数据安全防线

芯盾时代数据安全治理(DSG)框架,以国家法律法规、行业监管标准、行业最佳实践为依据,从数据安全战略出发,以数据分类分级为支撑,构数据安全管理体系、数据安全技术体系、数据安全运营体系与数据安全监督评价…

腾讯大数据基于 StarRocks 的向量检索探索

作者:赵裕隆,腾讯大数据研发工程师 本文整理自腾讯大数据工程师在 StarRocks 年度峰会上的分享,深入探讨了向量检索技术的原理与应用。此功能已应用到腾讯内部多个场景,引入 StarRocks 后,业务不仅不需要维护多套数据库…

STM32 RTC 实时时钟说明

目录 背景 RTC(实时时钟)和后备寄存器 32.768HZ 如何产生1S定时 RTC配置程序 第一次上电RTC配置 第1步、启用备用寄存器外设时钟和PWR外设时钟 第2步、使能RTC和备份寄存器访问 第3步、备份寄存器初始化 第4步、开启LSE 第5步、等待LSE启动后稳定状态 第6步、配置LSE为…

android studio在gradle的build时kaptDebugKotlin这个task需要执行很久

只修改了一点java代码,kaptDebugKotlin这个任务却执行了3~5分钟。。。

机器学习(李宏毅)——self-Attention

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!! 二、大纲 何为self-Attention?原理剖析self-Attention VS CNN、RNN、GNN 三、何为self-Attenti…

【Java使用Geotools对shp文件进行读取,读取完成之后shp、dbf、shx文件总是被占用,无法删除,如何解决呢?】

Java使用Geotools对shp文件进行读取,读取完成之后shp、dbf、shx文件总是被占用,无法删除,如何解决呢? 问题描述原因分析与问题解决1.直接原因2.解决方案 问题描述 Java使用Geotools对shp文件进行读取,读取完成之后.sh…

lvs的DR模式

基于Linux的负载均衡集群软件 LVS 全称为Linux Virtual Server,是一款开源的四层(传输层)负载均衡软件 Nginx 支持四层和七层(应用层)负载均衡 HAProxy 和Nginx一样,也可同时支持四层和七层(应用层)负载均衡 基于Linux的高可用集群软件 Keepalived Keepalived是Linux…

基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系

摘要 本文提出了一种基于进化式大语言模型(Evolutionary LLM)的智能漏洞挖掘框架,突破了传统静态分析的局限,构建了具备对抗性思维的动态攻防体系。通过引入深度强化学习与多模态感知机制,实现了漏洞挖掘过程的自适应进化,在RCE、SQLi、XXE等关键漏洞类型的检测中达到97…

java项目之基于SSM会议管理系统的设计与实现源码(ssm+mysql)

项目简介 基于SSM会议管理系统的设计与实现实现了以下功能: 基于SSM会议管理系统的设计与实现的主要使用者分为:管理员登录后修改个人的密码。用户管理中,对公司内的用户进行管理,包括会议管理员和员工,管理部门信息…