python爬虫怎么使用BeautifulSoup库

本篇内容介绍了“python爬虫怎么使用BeautifulSoup库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

海口网站建设公司创新互联,海口网站设计制作,有大型网站制作公司丰富经验。已为海口成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的海口做网站的公司定做!

BeautiSoup类的基本元素及用bs4遍历HTML基本方法

1,BeautifulSoup类的基本元素

有5种基本元素:

Tag: 标签,最基本的信息组织单元, .

Name: 标签名字, ..name :返回一个字符串

Attributes: 标签的属性, ..attrs :返回一个字典类型

NavigableString:标签中的字符串, ..string :返回一个字符串

Comment: 标签中的注释信息,会在 ..string中获得。

比如现在有一个HTML文档:

The demo python introduces several python courses.

Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:

Basic Python

and

Advanced Python.

This is not a Comment.

我们对此文档用BS类的基本元素进行应用:

先煲一锅汤:>>> soup = BeautifulSoup(html, "html.parser")

用 .获得一个标签的全部信息:

如:>>> soup.p

python爬虫怎么使用BeautifulSoup库

用.name获得这个标签的名字:

如:>>> p.name

python爬虫怎么使用BeautifulSoup库

Tag属性还有另外一个重要的用法, 就是当我们对一个标签内的子节点进行遍历时,可能会有不是标签的节点,比如’\n’等,此时可利用bs4库提供的bs4.element.Tag属性来进行甄别。

用到 isinstance()方法。比如:isinstance(soup.a, bs4.element.Tag)

python爬虫怎么使用BeautifulSoup库

用.attrs获得这个标签的属性:

如>>> soup.a.attrs

python爬虫怎么使用BeautifulSoup库

可以对a标签的具体属性进行获得:>>> soup.a['href']

python爬虫怎么使用BeautifulSoup库

用.string获得这个标签中的字符串信息:

如:>>> soup.p.string:

python爬虫怎么使用BeautifulSoup库

我们看到.string可以跨越标签,直接获得标签内的字符串。

但是: 当外层标签内含有多个平行的内层标签时,就不行了:

比如:郑州人流医院哪家好 http://m.zzzy120.com/

此p标签内有多个平行的a标签,直接用p.string返回为None

最后,说说Comment属性

可用>>> soup.b.string来获得注释的信息:

二者类型是不同的,因此可用bs4库的 isinstance(, bs4.element.Comment)来过滤注释信息,或者获得注释信息。

2,用BeautifulSoup遍历HTML的方式

1,下行遍历:

3个属性:

1,.contents : 子节点的列表,将所有儿子节点存入列表(还包括所有的\n)

2,.children : 子节点的迭代类型,与.contents类似,用于循环遍历儿子节点。

3, .descendants : 包含所有的子孙节点。与children一样,只能用于迭代。

2,上行遍历:

2个属性:

1,.parent : 节点的父亲标签

2,.parents: 节点先辈的迭代类型,用于循环遍历先辈节点(所有的先辈)。

3,平行遍历:

4个平行遍历属性:(需要发生在同一个父亲节点下的各节点间。)

1,.next_sibling : 返回按照HTML文本顺序的下一个平行节点标签。

2,.previous_sibling: 返回。。的上一个平行节点标签。

3,.next_siblings: 迭代类型, 返回按照顺序的所有平行节点标签。

4,.previous_sibings:迭代类型 。。。。。。。。。

3,BeautifulSoup的格式化输出与编码:

prettify()函数:能够为HTML标签,文本增加换行符,

1,世界上的所有信息都可以用3中标记形式进行标记。

XML 格式: 类似于HTML,标签形式。

JSON: 有类型的键值对 key:value 如:

"name" : "北京" -----;一个键值对

"name" : ["hello", "hello"] -----: 一个键对应多个值1

"name" : {"subkey" : "subvalue"} -----:一个键值对作为一个值对应于一个键

YAML: 无类型的键值对 : key : value

name : 北京

name :

-newName : 北京

-newName : 上海 (并列)

name :

newname : hello (嵌套)

比较::

XML用<>标记 : 扩展性好,但是繁琐。 Internet上的信息交互与传递,多用XML。

JSON用“” : 信息有类型,适合程序处理(js),较XML整洁。(无法注释) 用于移动应用云端和节点的信息通信。用在对程序接口处处理。

YAML用缩进 : 信息无类型, 文本信息比例最高,可读性好。各类系统的配置文件,有注释易读。

2,信息的提取方式

1,完整解析信息的标记形式,再提取关键信息。

2,无视标记形式,直接搜索关键信息。

3,融合方法。

如:提取HTML中所有的URL标签。

思路):

1,搜索所有的标签

2,解析标签格式,提取href后的链接内容。

3,find_all()方法

最常用的查找方法

<>.find_all(name, attrs, recursive, string, **kwargs)

返回一个列表类型,存储查找的结果.

使用方法:

可单独指定name,attrs, recursive, string等

标签名, 属性(或字典形式的键值对), 默认为对子孙节点搜索, 字符串。

(..) 等价于 .find_all(..)

soup(..) 等价于 soup.find_all(..)

<>.find()搜索只返回一个结果,字符串结果。

“python爬虫怎么使用BeautifulSoup库”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


新闻标题:python爬虫怎么使用BeautifulSoup库
转载来于:http://pwwzsj.com/article/geogjo.html