1. BS4 介绍
BS4 全称 BeautifulSoup 4.4,是一个可以从xml或html文件中提取数据的Python库,在接口测试过程中可用于解析返回xml格式的内容,配合 requests 库,提取目标字段,最终实现参数传递和接口断言的功能。
官网:https://beautifulsoup.readthedocs.io/zh_CN/latest/
2. 基本解析语法
① find_all 查找结果是一个list对象,find 只查找一个(返回第一个),指定数量需要使用 limit 参数
② get_text() 获取 tag 标签下所有的文本
③ replace 替换字符串里面的特殊字符,如replace("\n",""),将换行删除
④ Contents返回所有的子 Tag(list)
3. 练习:爬取“摄图网”图片
import requests,json
from bs4 import BeautifulSoup #如果没有安装,记得使用pip install beautifulsoup4 命令先完成安装
res = requests.get('http://699pic.com/sousuo-218808-13-1.html') #访问摄图网,获取返回内容
#print(res.content) #调试用,可观察返回内容
soup = BeautifulSoup(res.content,"html.parser") # Python标准库解析器,详见官网
images = soup.find_all(class_="lazy") #F12控制台看图片在哪个tag下,摄图网是在class=lazy标签节点下
#print(images) #调试用,可观察返回内容
images_url_collection = [] #用于后续放入txt文件中
for i in images:
try:
title = i["title"] #抓取图片的标题
url_image = i["data-original"] #抓取图片的url(data-original是从F12控制台中观察到的)
images_url_collection.append(url_image) #每找到一个url,放入list中,用于后续txt文件
#print(title,url_image) #打印调试用
ima = requests.get(url_image) #再次请求该url
#print(len(images_url_collection)) #打印调试用
#1. 下载到指定目录
with open("D://djangostudy//zhuatu//"+title+".jpg","wb") as file: #匹配图片标题,wb写入权限
file.write(ima.content)
except Exception as msg: #如有异常,打印异常信息
print(msg)
'''
# 2. 如果是写入txt文件,则用以下代码
with open("D://djangostudy//zhuatu//"+"zhuatu.txt","w") as f:
f.write("\n".join(images_url_collection))
'''
网友评论