爬虫解析库BeautifulSoup的一些笔记
发布日期:2021-08-15 22:29:14 浏览次数:38 分类:技术文章

本文共 1420 字,大约阅读时间需要 4 分钟。

BeautifulSoup类使用


 
基本元素
说明
Tag
标签,最基本的信息组织单元,分别是<>和</>标明开头和结尾
Name
标签的名字,<p></p>的名字是/'p',格式:<tag>.name
Attributes
标签的属性,字典形式组织,格式:<tag>.attrs
NavigableString
标签内非属性字符串,<></>中字符串,格式:<tag>.string
Comment
标签内字符串的注释部分,一种特殊的Comment类型

BeautifulSoup库的主要函数以及用法

1.创建BeautifulSoup库对象

import lxmlimport requestsfrom bs4 import BeautifulSoup

2.解析器的选择

 

python标准库

BeautifulSoup(markup, "html.parser")

python内置的标准库 ,执行速度适中,文档容错能力强

python2.7以及python3.2。2之前的文档容错能力差

lxml HTML解析器

BeautifulSoup(markup, "lxml")

速度快,文档容错能力强

需要安装C语言库需要安装C语言库

lxml XML解析器

BeautifulSoup(markup, "xml")

速度快,唯一支持XML的解析器

需要安装C语言库

html5lib

BeautifulSoup(markup, "html5lib")

最好的容错性,以浏览器的方式解析文档,生成HTML5格式的文档

速度慢,不依赖外部扩展

 

3.遍历文档树

.contents 返回当前节点的所有子节点 返回类型是列表
.children  返回当前节点的所有子节点 返回类型是list生成器对象
.descendants 返回当前节点的所有子孙节点 返回类型是list生成器对象
.parent    返回当前节点的父亲节点     返回类型是节点Tag
.parents    返回当前节点的所有父亲节点 返回类型是list生成器对象
.next_sibling 返回当前节点的下一个兄弟节点 
.previous_sibling 返回当前节点的所有兄弟节点 返回类型是list生成器对象
.next_element  返回当前节点的下一个Tag
.previous_sibling 返回当前节点的上一个节点
.next_siblings 返回当前节点后的所有兄弟节点
.previous_siblings 返回当前节点前的所有节点 
.string 返回当前节点标签内的内容
如果当前Tag包含了多个子节点Tag就无法确定 string方法应该调用哪个节点的内容
.strings 返回多个内容 需要遍历获取
 

4.搜索文档

find_all(name, attrs, recursive, text, **kwargs)
name 参数
            A 传字符串
            B 正则表达式
            C 传列表
            D 传True
            E 传方法
 
keyword参数
            
 
text 参数
            
 

5.CSS选择器

 
select 方法
    1 通过标签名查找
    2 通过类名查找
    3 通过id名查找
    4 组合查找
    5 属性查找
select 返回的是list对象
获取标签的所有字符串使用get_text()
 

转载于:https://www.cnblogs.com/1328497946TS/p/11016489.html

转载地址:https://blog.csdn.net/weixin_30781107/article/details/97075956 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:理解RxJava线程模型
下一篇:stringstream快速实现String和int之间的转换

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年02月28日 15时52分21秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java图片延迟加载_jQuery实现图片延迟加载 2019-04-21
java开发加入购物车功能_java web开发——购物车功能实现 2019-04-21
Java虚拟机不能满足_深入理解Java虚拟机--读书笔记1/3 2019-04-21
python 协程 asyncio_python – asyncio.as_completed是否会产生期货或协同程序? 2019-04-21
java设定xml文件的encoding_配置web-xml解决中文乱码问题,及各种乱码问题集结 2019-04-21
hanlp java api_java分词工具hanlp介绍 2019-04-21
nginx php 源码安装,Nginx1.12.2加php7.2.0的编译安装 2019-04-21
php 删除字节,php – 删除无效/不完整的多字节字符 2019-04-21
php 实现版本号对比,如何在PHP中实现比较版本号 2019-04-21
php sql 给数据库追加内容,php如何向数据库中的某串数据后追加内容【急】 2019-04-21
php微信小程序获取用户信息,微信小程序授权获取用户详细信息openid的实例详解... 2019-04-21
Java三元运算和if,Java三元运算符与<JDK8兼容性中的if / else 2019-04-21
graphql-php enum,php – 如何在不写长查询的情况下查询所有的GraphQL类型字段? 2019-04-21
php date 函数用法,php中date()日期时间函数使用方法 2019-04-21
php除法获取整数和余数,PHP除法取整和取余数 2019-04-21
java迷宫路径,Java中的迷宫路径查找器 2019-04-21
Mysql从库主键卡住,数据库主键更新死锁问题 2019-04-21
php substr cnblog,php中substr用法示例 2019-04-21
php链接怎么截取,PHP 截取网页中的固定种子链接 2019-04-21
iis运行不起来php报500,解决IIS上安装thinkphp6运行报500错误 2019-04-21