<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<ul>
<li id="l1">张三</li>
<li id="l2">李四</li>
<li>王五</li>
<a href="" id="" class="a1">尚硅谷</a>
<span>嘿嘿嘿</span>
</ul>
</div>
<a href="" title="a2">百度</a>
<div id="d1">
<span>哈哈哈</span>
</div>
<p id="p1" class="p1">呵呵呵</p>
</body>
</html>
"""
.-''-.
.--. _..._ .' .-. )
|__| .' '. / .' / /
.--..-,.--. . .-. . (_/ / /
| || .-. | | ' ' | / /
| || | | | _ _ | | | | / / _ _
| || | | || ' / | | | | | . ' | ' / |
| || | '-.' | .' | | | | | / / _.-').' | .' |
|__|| | / | / | | | | | .' ' _.'.-'' / | / |
| | | `'. | | | | | / /.-'_.' | `'. |
|_| ' .'| '/| | | | / _.' ' .'| '/
`-' `--' '--' '--'( _.-' `-' `--'
Created on 2023/4/12 20:43.
@Author: haifei
"""
import time
from bs4 import BeautifulSoup as bs
'''
BeautifulSoup,和lxml一样,是一个html的解析器,主要功能也是解析和提取数据
缺点:效率没有lxml的效率高
优点:接口设计人性化,使用方便
创建对象的两种方式:
1、服务器响应的文件生成对象
soup = BeautifulSoup(response.read().decode(), 'lxml')
2、本地文件生成对象
soup = BeautifulSoup(open('1.html'), 'lxml')
通过解析本地文件 学习bs4的基础语法
'''
soup = bs(open('解析_5_bs4的基本使用.html', encoding='utf-8'), 'lxml')
print(soup.a)
print(soup.a.attrs)
print(soup.find('a'))
print(soup.find('a', title="a2"))
print(soup.find('a', class_="a1"))
print(soup.find_all('a'))
print(soup.find_all(['a', 'span']))
print(soup.find_all('li', limit=2))
print(soup.select('a'))
print(soup.select('.a1'))
print(soup.select('#l1'))
print(soup.select('li[id]'))
print(soup.select('li[id="l2"]'))
print(soup.select('a,li'))
print(soup.select('div li'))
print(soup.select('div ul li'))
print(soup.select('div>li'))
print(soup.select('div>ul>li'))
obj = soup.select('#d1')[0]
print(obj.string)
print(obj.get_text())
'''
如果标签对象中 只有内容 那么string和get_text()都可以使用
如果标签对象中 除了内容还有标签 那么string就获取不到数据 而get_text()可以获取数据
我们一般情况下 推荐使用get_text()
'''
obj = soup.select('#p1')[0]
print(obj.name)
print(obj.attrs)
print(obj.attrs.get('class'))
print(obj.get('class'))
print(obj['class'])
if __name__ == '__main__':
start = time.time()
print('It takes', time.time() - start, "seconds.")
"""
.-''-.
.--. _..._ .' .-. )
|__| .' '. / .' / /
.--..-,.--. . .-. . (_/ / /
| || .-. | | ' ' | / /
| || | | | _ _ | | | | / / _ _
| || | | || ' / | | | | | . ' | ' / |
| || | '-.' | .' | | | | | / / _.-').' | .' |
|__|| | / | / | | | | | .' ' _.'.-'' / | / |
| | | `'. | | | | | / /.-'_.' | `'. |
|_| ' .'| '/| | | | / _.' ' .'| '/
`-' `--' '--' '--'( _.-' `-' `--'
Created on 2023/4/12 21:22.
@Author: haifei
"""
import time
from urllib import request
from bs4 import BeautifulSoup
url = 'https://www.starbucks.com.cn/menu/beverages/'
response = request.urlopen(url)
content = response.read().decode('utf-8')
soup = BeautifulSoup(content, 'lxml')
name_list = soup.select('ul[class="grid padded-3 product"] strong')
for name in name_list:
print(name.get_text())
'''
阿馥奇朵™
麦芽雪冷萃™
冷萃浮乐朵™
气致™冷萃浮乐朵™
冷萃冰咖啡
轻甜奶油冷萃
绵云冷萃
美式咖啡(热/冷)
拿铁(热/冷)
摩卡(热/冷)
卡布奇诺(热/冷)
焦糖玛奇朵(热/冷)
浓缩咖啡
馥芮白™
榛果风味拿铁(热/冷)
香草风味拿铁(热/冷)
焦糖浓缩咖啡星冰乐
抹茶星冰乐
芒果西番莲果茶星冰乐
摩卡星冰乐
摩卡可可碎片星冰乐
香草风味星冰乐
气炫冰山美式
橙柚派对
醋意桃桃
酸柠浮冷萃
气致™冷萃咖啡
经典巧克力饮品(热/冷)
红茶拿铁(热/冷)
抹茶拿铁(热/冷)
茶瓦纳™ 冰摇柚柚蜂蜜红茶
冰摇红莓黑加仑茶
冰摇芒果花草茶
茶瓦纳™冰摇桃桃乌龙茶
梨光清润路芭茶
橘香柚柚花草茶
'''
if __name__ == '__main__':
start = time.time()
print('It takes', time.time() - start, "seconds.")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2022-04-12 HM-WeChatMiniApp
2022-04-12 HM-SpringCloud微服务系列9.3.1【实践:XA模式、AT模式】