bs4模块使用(一)

1. 安装BS4

pip install beautifulsoup4
pip install lxml

2. 对象种类

bs4将html文档解析成一个树形结构,每个节点都是python对象,大概可分为下面四种:

2.1 Tag

后面再详细介绍,先介绍最重要的两个属性
name

soup = BeautifulSoup("<li><a href='https://news.cnblogs.com/' οnclick='''countClicks(''nav'', ''skin-navbar-news'')'''>新闻</a></li>",features="lxml")

print(soup)
a=soup.a
print(a)
print(a.name)
# 修改name会影响,bs4对html文档的解析
a.name = "b"
print(a.name)
print(a)
print(soup)

在这里插入图片描述

attributes
对于tag对象的属性操作,和操作字典一样

from bs4 import BeautifulSoup

soup = BeautifulSoup("<li><a class='a b c d e' href='https://news.cnblogs.com/' οnclick='countClicks()'>新闻</a></li>",features="lxml")

a = soup.a
# 查看所有属性及其值
a_dic = a.attrs
print(a_dic)

for item in a_dic.keys():
    print(a_dic[item])

a_dic["href"] = "https://www.baidu.com"
a_dic["data-index"] = 99
print(a_dic["class"])

在这里插入图片描述

对于含有多个属性值的属性,查看属性时,返回列表,元素为属性值

2.2 NavigableString

Beautiful Soup用 NavigableString 类来包装tag中的字符串

from bs4 import BeautifulSoup
soup = BeautifulSoup("<li><a class='a b c d e' href='https://news.cnblogs.com/' οnclick='countClicks()'>新闻</a></li>",features="lxml")

a = soup.a
print(a.string)
print(type(a.string))
# tag中包含的字符串不能编辑,但是可以被替换成其它的字符串,用 replace_with() 方法
a.string.replace_with("news")
print(a.string)
print(a)

在这里插入图片描述

如果想在Beautiful Soup之外使用 NavigableString 对象,需要调用 unicode() 方法,将该对象转换成普通的Unicode字符串,否则就算Beautiful Soup已方法已经执行结束,该对象的输出也会带有对象的引用地址.这样会浪费内存.

2.3 BeautifulSoup

BeautifulSoup 对象表示的是一个文档的全部内容,BeautifulSoup 对象并不是真正的HTML或XML的tag,没有name和attribute属性

2.4 Comment

Comment 对象是一个特殊类型的 NavigableString 对象
NavigableString 存在许多子类,不用适用于解析xml文件

相关推荐

  1. python爬虫-bs4

    2024-07-22 16:30:02       32 阅读
  2. 爬虫解析-BeautifulSoup-bs4(七)

    2024-07-22 16:30:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 16:30:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 16:30:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 16:30:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 16:30:02       55 阅读

热门阅读

  1. YARA:第十六章-libyara之C API手册(威胁检测)

    2024-07-22 16:30:02       15 阅读
  2. ipython 的使用技巧的整理

    2024-07-22 16:30:02       17 阅读
  3. sklearn基础教程

    2024-07-22 16:30:02       17 阅读
  4. 自然语言处理基础【1】词嵌入

    2024-07-22 16:30:02       14 阅读
  5. 【C++ 初始化列表】

    2024-07-22 16:30:02       14 阅读
  6. 20240722-【抽象类和接口的区别】

    2024-07-22 16:30:02       20 阅读
  7. vue中怎么改变状态值?

    2024-07-22 16:30:02       17 阅读