第一个爬虫
采集百度网页
python
# 导入包
import urllib.request
# 定义url
url = "https://www.baidu.com"
# 模拟浏览器发送请求
response = urllib.request.urlopen(url)
# 获取响应中的页面源码
"""
read()方法:返回字节形式的二进制数据
decode("字符集")方法;解码(二进制 --> 字符串)
"""
content = response.read().decode("utf-8")
# 打印内容
print(content)代码分析
(1)需求包:urllib.request(利用 request 来发送请求)
(2)urlopen( )方法:打开网页
(3)read( )方法:通过返回的 response 来读取内容,以字节的形式返回二进制数据
返回形式:b'(二进制数据)'
(4)decode( "字符集" )方法:指定字符集解码,将二进制数据转为字符串
⭐ 一个类型
response 的类型是:HTTPResponse
python
# 导入包
import urllib.request
# 定义url
url = "https://www.baidu.com"
# 模拟浏览器发送请求
response = urllib.request.urlopen(url)
# 一个类型
print(type(response))⭐ 八个方法
获取到 respnse 响应后,可以调用如下常见的八个方法获取数据
decode( )
decode()方法:解码,将字节形式的二进制数据转为字符串
encode( )
encode()方法:反解码,字符串数据转为字节形式的二进制数据
read( )
read("读取的字节数"):以字节的形式返回二进制数据(b'(二进制数据)')
readline( )
readline() 方法:只读取一行
readlines( )
readlines()方法:一行一行读取,直至结束
getcode( )
getcode()方法:返回状态码,查看执行状态(200 代表执行成功)
geturl( )
geturl()方法:返回 url
getheaders( )
getheaders():获取 headers
示例代码
python
# 导入包
import urllib.request
# 定义url
url = "https://www.baidu.com"
# 模拟浏览器发送请求
response = urllib.request.urlopen(url)
# 一个类型
# print(type(response)) # <class 'http.client.HTTPResponse'>
# 八个方法
"""
decode()方法:解码,将字节形式的二进制数据转为字符串
"""
# content = response.read().decode()
# print(content)
"""
encode()方法:反解码,字符串数据转为字节形式的二进制数据
"""
# content = response.read().decode().encode()
# print(content)
"""
read("读取的字节数"):以字节的形式返回二进制数据(b'(二进制数据)')
"""
# content = response.read()
# content = response.read(1)
# print(content)
"""
readline() 方法:只读取一行
"""
# content = response.readline()
# print(content)
"""
readlines()方法:一行一行读取,直至结束
"""
# content = response.readlines()
# print(content)
"""
getcode()方法:返回状态码,查看执行状态(200代表执行成功)
"""
# print(response.getcode())
"""
geturl()方法:返回url
"""
# print(response.geturl())
"""
getheaders():获取headers
"""
# print(response.getheaders())urllib 下载
urlretrieve( )
该方法用于下载内容
调用方法:urllib.request.urlretrieve("下载内容的地址", "下载内容的存放路径,并指定下载文件的类型和名称")
网页
url:复制网页地址
图片
url:复制图片地址
视频
url:浏览器中点 F12 打开检查,选择元素找到视频的 <video> 标签,然后找到 src,属性值即为视频地址
注意点:有些网站会设置反爬机制,有可能无法下载,例如 B 站视频
示例代码
python
#下载网页
url_page = "https://www.baidu.com"
urllib.request.urlretrieve(url_page,"./download/baidu.html")
#下载图片(赋值图片地址)
url_photo = "https://inews.gtimg.com/om_bt/OXp0VXNiDzc2sx2CbzrnQapRtm7twZesN4jitAz_K2C4MAA/641"
urllib.request.urlretrieve(url_photo,"./download/photo.png")
#下载视频(打开 F12 检查,查看视频的链接)
url_video = "https://vdept3.bdstatic.com/mda-rgu5j8g3ue3ikxvf/cae_h264/1753761415165637196/mda-rgu5j8g3ue3ikxvf.mp4?v_from_s=hkapp-haokan-hna&auth_key=1753866773-0-0-85ceb8d7d4320c7d33a0c5158b1ff232&bcevod_channel=searchbox_feed&pd=1&cr=0&cd=0&pt=3&logid=0773456706&vid=6206039417537893107&klogid=0773456706&abtest="
urllib.request.urlretrieve(url_video,"./download/video.mp4")