爬虫:网页爬取
爬虫:网页爬取
一、requests模块
1、下载requests库:pip install requests
2、新建py文件,导入requests库
import requests
3、 查看数据是否在源代码中
4、复制网址
url = "https://wenku.baidu.com/"
5、查看请求方式
1)在页面点击“检查”
2)选择“Network”网络
3)选择"Doc"当前页面的请求,刷新
4)点击出现的请求
5)查看“Headers”里面的“General”下的“Request Method”里面的请求方式
6、发送请求
response = requests.get(url)
7、赋值编码
response.encoding = "utf-8"
8、打印响应的状态码
print(response.status_code) # 200
9、打印响应的数据类型
print(response.headers["content-type"]) # text/html; charset=utf-8
10、打印请求的编码
print(response.encoding) # utf-8
11、打印网页源代码
print(response.text)
12、获取字节
print(response.content) # b 二进制
注:抓取图片、歌曲、视频等,媒体文件就用content
13、打印响应头信息
print(response.headers)
14、打印请求头信息
print(response.request.headers)
二、如何下载一张图片
1、导入requests库
import requests
2、查看请求方式
3、复制图片链接
url = "http://www.gdsh119.com/images/logo.png"
4、发起请求并获取数据
resp = requests.get(url).content
5、打印图片字节信息
print(resp)
6、保存图片
with open("./img/"+"img.png","wb") as f:
f.write(resp)
注:图片、视频等媒体文件都用wb
三、发送携带headers的请求
为什么要携带headers?
需要伪装成客户端去欺骗服务端,以此来获取数据
import requests
url = "https://wenku.baidu.com/"
# headers是一个字典对象
# 伪装请求头 request headers 信息
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}
# 添加herders进请求中
# 发送请求并获取数据
resp = requests.get(url,headers=headers)
# 查询请求头信息
print(resp.request.headers)
print(resp.text)
四、发送携带参数的请求
方法一:直接添加网址链接
import requests
url = "https://image.baidu.com/search/index?tn=baiduimage&word=%E6%98%A5%E5%A4%A9"
# 定义一个请求头,把爬虫伪装成浏览器
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}
# 发送请求并获取数据
resp = requests.get(url,headers=headers)
# 指定编码格式
resp.encoding = "utf-8"
print(resp.text)
方法二:把参数用字典的形式进行添加
import requests
# 参数的形式也是一个字典
url = "https://image.baidu.com/search/index?tn=baiduimage&"
# 定义一个字典,里面是参数
kw = {"word":"春天"}
# 定义一个请求头,把爬虫伪装成浏览器
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}
# 发送请求并获取数据
resp = requests.get(url,headers=headers,params=kw)
# 指定编码格式
resp.encoding = "utf-8"
print(resp.text)
方法三:把参数转换成url参数的形式进行拼接
from urllib.parse import urlencode
import requests
# 定义一个字典,里面是参数
kw = {"word":"春天"}
# 定义一个请求头,把爬虫伪装成浏览器
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}
# urlencode 可以将字典对象转换成url的请求参数并进行拼接
url = "https://image.baidu.com/search/index?tn=baiduimage&"+urlencode(kw)
# 发送请求并获取数据
resp = requests.get(url,headers=headers)
# 指定编码格式
resp.encoding = "utf-8"
print(resp.text)
五、代理ip
import requests
# proxies类型:字典
url = "http://httpbin.org/ip" # ---->显示当前电脑的ip
# 替换ip
# 格式:自定义变量 = {"http":"协议+代理ip:端口"}
proxies = {"http":"http://182.34.206.193:25624"}
resp = requests.get(url,proxies=proxies)
print(resp.text) # ---->显示当前电脑的ip
import requests
url = "https://www.baidu.com"
# 设置代理ip ---> 防止自己的ip泄露
proxies = {"http":"http://182.34.206.193:25624"}
# 发送请求的时候,替换ip
resp = requests.get(url,proxies=proxies)
print(resp.text)