Skip to content

第一个爬虫


采集百度网页

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")