前端盲一枚 近期对爬虫产生了独特的兴趣 嘿嘿 学习这份美丽的汤 并做个笔记 官方文档 什么?官方的看不明白? 我也是 正文 BeautifulSoup 一个灵活又方便的网页解析库,处理高效,支持多种解析器。 有了它,不用正则表达式也可以找到需要的数据(正则表达式学习起来有点痛苦)
你也想使用吗?那就开始安装吧!!!
如果已经装了pip 那事情就变得很简单了 只需要打开cmd,运行pip install BeautifulSoup4 咖啡还没倒满,就已经安装完毕了 哈哈
可以用pip list查看有没有安装成功
如果你没有pip 那就下载包安装吧下载地址👇 下载完成后解压到python3安装目录,lib下的site-packages目录 切换到命令行,进入到库目录下,输入python setup.py install,回车开始安装
执行完毕后在IDLE 中执行from bs4 import BeautifulSoup 查看一下吧
解析器 BeautifulSoupBeautiful Soup不仅支持Python标准库中的HTML解析器,还支持一些第三方的解析器 python 标准库
BeautifulSoup(markup,"html.parser")第三方解析器 lxml HTML
BeautifulSoup(markup,"lxml")lxml XML
BeautifulSoup(markup,"xml")html5lib
BeautifulSoup(markup,"html5lib")第三方的解析器不做安装,因为我还用不到 哈哈
安装完毕可以开始使用了
导入模块 from bs4 import BeautifulSoup
本地文件
soup = BeautifulSoup(open('本地文件'), "html.parser")网络文件
soup = BeautifulSoup('字符串类型或者字节类型', "html.parser")根据标签名查找 soup.a 只能找到第一个符合要求的标签 获取属性 soup.a.attrs 获取所有的属性和值,返回一个字典 soup.a['href'] 获取href属性 获取内容 soup.a.string soup.a.text soup.a.get_text() find() 返回的匹配结果的第一个元素 soup.find('a')
find_all() 可以根据标签名,属性,内容查找文档, 返回一个列表 soup.find_all('a') soup.find_all(['a', 'b']) soup.find_all('a', limit=2) 限制前两个
正则表达式
这表示<body>和<b>标签都应该被找到:
for tag in soup.find_all(re.compile("^b")): print(tag.name)按CSS搜索 可以通过class_参数搜索有指定CSS类名的tag:
soup.find_all("a", class_="sister")CSS选择器.select() 在 Tag 或 BeautifulSoup 对象的 .select() 方法中传入字符串参数, 即可使用CSS选择器的语法找到tag:
soup.select("title") # [<title>The Dormouse's story</title>] soup.select("p nth-of-type(3)") # [<p class="story">...</p>]