requests库
用与发送http请求,获取网页内容
import requests
# 请求的url
url = "https://www.baidu.com"
# 请求头
headers = {
# 设置ua,模拟浏览器请求,一般的网站会通过根据ua来判断请求是否由爬虫发起
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
}
# 发送get请求,其他请求与个体请求类似
reponse = requests.get(url,headers = headers)
# 获取返回头
response.headers
# 例,获取返回头里的Set-cookie
response.headers.get('Set-cookie')
# 返回的状态码
response.status_code
# 返回的文本内容
response.text
# 返回的二进制内容,下载图片,视频等媒体内容时写入该内容
response.content
# 返回的cookies
response.cookies
# 返回的内容时json时,会转为相应类型(列表或字典),若返回的不是json,会报错
response.json()
请求携带参数
import requests
url = "https://www.baidu.com"
# get请求,get请求可以通过URL拼接请求参数,也可通过以下方式
params = {
"wd":"好看的风景"
}
get_respoonse = requests.get(url, params = params)
# post请求
data = {
"name":"蔡徐坤"
}
post_response = requests.post(url, data = data)
媒体文件下载(二进制文件下载)
以下例子是图片的下载,视频的下载也一样
import os
import requests
dir_name='./image/'
# 没有目录创建目录
if not os.path.isdir(dir_name):
os.makedirs(dir_name)
url = "图片url"
# 二进制图片返回
response = requests.get(url).content
with open('./image/tupian.jpg',mode='wb') as img:
img.write(response)
file对象mode常用模式(打开方式)
w :打开文件写入,原有内有会被覆盖,没有文件则创建
a :打开文件追加,会接在原有内容后面,没有文件则创建
b :已二进制格式打开 (与上面的组合下载二进制文件)
BeautifulSoup
用于解析html结构
# 获取文档中id名为Label1的标签中的img标签,又获取img的src属性
img = soup.find(id="Label1").img.attrs.get('src')