BeautifulSoup解析

bs4的基本使用 本地文件
from bs4 import BeautifulSoup # 通过解析本地文件 来将bs4的基础语法进行讲解 # 默认打开的文件的编码格式是gbk 所以在打开文件的时候需要指定编码 soup = BeautifulSoup(open('075_尚硅谷_爬虫_解析_bs4的基本使用.html',encoding='utf-8'),'lxml') # 根据标签名查找节点 # 找到的是第一个符合条件的数据 # print(soup.a) # 获取标签的属性和属性值 # print(soup.a.attrs) # bs4的一些函数 # (1)find # 返回的是第一个符合条件的数据 # print(soup.find('a')) # 根据title的值来找到对应的标签对象 # print(soup.find('a',title="a2")) # 根据class的值来找到对应的标签对象 注意的是class需要添加下划线 # print(soup.find('a',class_="a1")) # (2)find_all 返回的是一个列表 并且返回了所有的a标签 # print(soup.find_all('a')) # 如果想获取的是多个标签的数据 那么需要在find_all的参数中添加的是列表的数据 # print(soup.find_all(['a','span'])) # limit的作用是查找前几个数据 # print(soup.find_all('li',limit=2)) # (3)select(推荐) # select方法返回的是一个列表 并且会返回多个数据 # print(soup.select('a')) # 可以通过.代表class 我们把这种操作叫做类选择器 # print(soup.select('.a1')) # print(soup.select('#l1')) # 属性选择器---通过属性来寻找对应的标签 # 查找到li标签中有id的标签 # print(soup.select('li[id]')) # 查找到li标签中id为l2的标签 # print(soup.select('li[id="l2"]')) # 层级选择器 # 后代选择器 # 找到的是div下面的li # print(soup.select('div li')) # 子代选择器 # 某标签的第一级子标签 # 注意:很多的计算机编程语言中 如果不加空格不会输出内容 但是在bs4中 不会报错 会显示内容 # print(soup.select('div > ul > li')) # 找到a标签和li标签的所有的对象 # print(soup.select('a,li')) # 节点信息 # 获取节点内容 # obj = soup.select('#d1')[0] # 如果标签对象中 只有内容 那么string和get_text()都可以使用 # 如果标签对象中 除了内容还有标签 那么string就获取不到数据 而get_text()是可以获取数据 # 我们一般情况下 推荐使用get_text() # print(obj.string) # print(obj.get_text()) # 节点的属性 # obj = soup.select('#p1')[0] # name是标签的名字 # print(obj.name) # 将属性值左右一个字典返回 # print(obj.attrs) # 获取节点的属性 obj = soup.select('#p1')[0] print(obj.attrs.get('class')) print(obj.get('class')) print(obj['class'])
bs4爬取星巴克
import urllib.request url = 'https://www.starbucks.com.cn/menu/' response = urllib.request.urlopen(url) content = response.read().decode('utf-8') from bs4 import BeautifulSoup soup = BeautifulSoup(content,'lxml') # //ul[@class="grid padded-3 product"]//strong/text() name_list = soup.select('ul[class="grid padded-3 product"] strong') for name in name_list: print(name.get_text())

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?