网络爬虫开发实战源码:https://github.com/MakerChen66/Python3Spider
原创不易,本文禁止抄袭、转载,多年爬虫实战开发经验总结,侵权必究!
目录
一、Beautiful Soup
Beautiful Soup介绍:
爬虫利器,出色的解析工具
下载官网:https://www.crummy.com/software/BeautifulSoup
安装方式:
Windows用户在命令行中输入:
pip install lxml -i https://pypi.doubanio.com/simple
pip install beautifulsoup4 -i https://pypi.doubanio.com/simple
Mac用户输入:
pip3 install lxml -i https://pypi.doubanio.com/simple
pip3 install beautifulsoup4 -i https://pypi.doubanio.com/simple
注意导入时的模块名称:
from bs4 import BeautifulSoup
我们只需要bs4里的BeautufulSoup模块
一个简单例子:prettify()格式化输出
1.1 四大对象种类
1.1.1 四大对象种类——Tag
Tag就是HTML中的一个个标签
注意:返回的是第一个符合要求的标签(即使HTML中有多个符合要求的标签)
attrs() ->获取标签的元素属性
get()方法 ->获取标签的某个元素值
可以通过修改字典的方式对这些属性和内容等等进行修改,删除等操作
1.1.2 四大对象种类——NavigableString
获取某个标签里面的内容
1.1.3 四大对象种类——Comment
<!-- Custom styles for this template -->
HTML中可以用<!-- 注释内容 -->
来添加,即不通过网页渲染出来的内容
1.1.4 四大对象种类——BeautifulSoup
BeautifulSoup 对象表示的是一个文档的全部内容
1.2 文档树
1.2.1 文档树——所有子孙节点
.descendants 把某个标签内的子孙节点都列出来,可以通过for循环来处理
for child in soup.descendants:
print(child)
注意:空格和换行都算一个节点
1.2.2 文档树——节点内容
想要获得一个Tag下面的多个内容,该如何操作?.strings或者.stripped_strings
for string in soup.ol.strings:
print(string)
for string in soup.ol.stripped_strings:
print(string)
.strings与.stripped_strings区别?.stripped_stirngs可以去除多余空白内容
1.2.3 文档树——父节点
.parent 获得当前tag的父节点
.parents 获得当前元素的所有父辈节点
print(soup.p.parent.name)
<a><p>Makerchen</p></a>
1.2.4 文档树——兄弟节点
兄弟节点:和当前节点在同一级的节点
<a class = "test">test</a>
<p class = "test1">test1</p>
.next_sibling 获取下一个兄弟节点
.prev_sibling 获取上一个兄弟节点
1.2.5 文档树——前后节点
前后节点:该节点之前或之后的所有节点,不分层次,注意与兄弟节点的区别
next_element
previous_element
next_elements
previous_elements
1.3 搜索文档树——find_all
.find_all 可以获得当前tag的所有tag子节点
print(soup.find_all('a'))
find_all()可以直接填的参数:标签名称(a,p,h1,ol等),列表([‘a’,‘p’]),正则表达式等
keyward参数:find_all(标签内属性名=属性值)
print(soup.find_all(content='A'))
limit参数:限制返回结果的数量
recursive参数:如果只想搜索tag的直接子节点,可以使用参数 recursive=False
1.4 CSS选择器
soup.select()筛选元素,返回的是list
语法规则:
标签名不加任何修饰
class前面加点
id前面加#
二、原文链接
本人原创公众号原文链接:阅读原文
原创不易,如果觉得有点用,希望可以随手点个赞,拜谢各位老铁!
三、作者Info
作者:小鸿的摸鱼日常,Goal:让编程更有趣!
原创微信公众号:『小鸿星空科技』,专注于算法、爬虫,网站,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding!
转载说明:本文禁止抄袭、转载,违者必究!