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

本文共 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之间的转换

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年02月28日 21时38分03秒

关于作者

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

推荐文章

怎么查看elementui版本_2021新年 Vue3.0 + Element UI 尝鲜小记 2019-04-21
adreno630gpu参数_小米8搭载Adreno 630图形处理器 比荣耀play上的GPU Turbo更成熟 2019-04-21
带bitlocker解密的pe_如何在PE下解锁bitlocker 2019-04-21
lj245a引脚功能图_谁找到74254,74LS245芯片引脚的功能和功能图啊? 2019-04-21
sts 创建webservice项目_通过eclipse将Java生成webservice | 学步园 2019-04-21
python数字字符串和数字相加_数字和字符串 2019-04-21
python风控模型举例_一文搞定风控模型6大核心指标(附代码) 2019-04-21
java arraylist 写入文件_java-将自定义对象的ArrayList写入文件 2019-04-21
ice glacier2 java_ICE提纲之demo/Glacier2/callback(跨网回调) 2019-04-21
java 转发上传文件_java 后台请求其他接口转发文件 2019-04-21
Java get set 同步_java – getResultSet()“每个结果只能调用一次” 2019-04-21
java jmx 配置_为什么在配置JMX时Java打开3个端口? 2019-04-21
java thread回调_使用Runnable在Java中实现回调 2019-04-21
java 内存区_Java内存模型和Java内存区域的区别和联系? 2019-04-21
java定时任务监控_Spring定时任务使用及如何使用邮件监控服务器 2019-04-21
java crc32 使用_Java CRC32的用法 2019-04-21
java读取unicode_java怎么样将unicode解码读取?Java读取本地文件进 2019-04-21
java.io.file()_Java File getUsableSpace()方法 2019-04-21
java httpclient 工具_spring整合httpClient工具类 2019-04-21
java监控其他服务器运行状态_windows服务器监控多个tomcat运行状态 2019-04-21