Day 20
一、 图片下载
1.网页图片下载
- 如果需要对网页上的图片进行下载,需要得到图片的地址,在利用 requests请求图片地址进行下载,但需要主要的是,在对图片、视频等文件保存时,需要对文件进行二进制保存。
2.图片下载顺序
-
- 对图片地址发送请求
-
- 获取图片数据
-
- 将数据写入图片文件中
import requests
def download_image(url: str):
# 1. 对图片地址发送请求
response = requests.get(url)
# 2.获取图片数据
data = response.content
# 3. 将数据写入图片文件中
with open('files/宝儿姐.jpeg', 'wb') as f:
f.write(data)
if __name__ == '__main__':
download_image('https://img0.baidu.com/it/u=1668990314,419582566&fm=253&fmt=auto&app=138&f=JPEG?w=350&h=350')
二、浏览器伪装
1.对爬虫进行伪装
- 在我们使用爬虫对所需网页数据进行爬取时,很多网站都会设置有反爬机制,我们需要对我们的爬虫进行伪装。
2…headers = {}
- headers是一个字典:{key:value}
- headers是给爬虫提供伪装的
- User-Agent --> 将爬虫伪装成浏览器
- User-Agent获取方法
import requests
headers = {
'user-agent': ******************
}
response = requests.get('https://movie.douban.com/top250', headers=headers)
print(response.text)
三、bs4数据解析
1.bs4的作用
- 专门用来解析网页数据的第三方库。(基于css选择器解析网页数据)
- 这个库下载的时候用’beautifulsoup4’, 使用的时候用’bs4’
- 注意:在使用bs4做数据解析的时候,需要依赖’lxml’这个第三方
- 导入解析相关类
from bs4 import BeautifulSoup
2. bs4的用法
- 1.备需要解析的数据(获取网页数据)
html = open('files/test.html', encoding='utf-8').read()
- 2.基于网页源代码创建BeautifulSoup对象
- soup对象代表网页对应的html标签(代表整个网页)
soup = BeautifulSoup(html, 'lxml')
-
- 获取标签
- soup.select(css选择器) - 在整个网页中获取css选择器选中的所有标签,返回值是一个列表,列表中元素是标签对象
- soup.select_one(css选择器) - 在整个网页中获取css选择器选中的第一个标签,返回值是标签对象
- 标签对象.select(css选择器) - 在指定标签中获取css选择器选中的所有表情,返回值是一个列表,列表中元素是标签对象
- 标签对象.select_one(css选择器) - 在指定标签中获取css选择器选中的第一个标签,返回值是标签对象
-
4.获取标签内容和标签属性
- a. 获取标签内容: 标签对象.text
- b.获取标签属性值: 标签对象.attrs[属性名]