爬虫基础指南(持续更新)

2024-02-28

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

PREV
docker使用指南(持续更新)
NEXT
mysql中提示字段不兼容导致的无法添加外键