【Python】【爬虫】关于Beautiful Soup库

来源:互联网 发布:淘宝条码扫描 编辑:程序博客网 时间:2024/05/15 08:09
1、引入库
from bs4 import BeautifulSoup
import bs4

2、简单讲,BeautifulSoup对应着一个HTML/XML文档的全部内容。

BeautifulSoup的基本元素有Tag、Name(格式:tag.name,标签的名字)、Attributes(格式:tag.attrs,常常是以字典形式组织的,相关内容不会在网页上显示出来)、NavigableString(格式:tag.string,标签内非属性字符串,<>…</>中字符串,相关内容会在网页上显示出来)、Comment(标签内字符串的注释部分,也是用tag.string提取出来)。

from bs4 import BeautifulSoup import requests url = "https://python123.io/ws/demo.html"r = requests.get(url)demo =  r.textsoup = BeautifulSoup(demo, "html.parser")soup.aOut[5]:<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>soup.pOut[6]:<p class="title"><b>The demo python introduces several python courses.</b></p>

可以直接使用soup.tagname 返回想要的:比如soup.a   soup.p,如果有多个标签,则返回第一个。
3、下行遍历:

.contents 子节点的列表,将<tag>所有儿子节点存入列表;

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

.descendants 子孙节点的迭代类型,包含所有子孙节点,用于循环遍历。

4、上行遍历:

.parent 节点的父亲标签;

.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点。

5、同辈遍历:

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

.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签;

.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签;

.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签。

6、prettify

.prettify()为HTML文本<>及其内容增加更加'\n'

.prettify()可用于标签,方法:<tag>.prettify(),这样可以方便地显示出来、有树形结构的东西。

7、XML:同HTML

     JSON:有类型键值对

     YAML:无类型键值对,用缩进来组织并列递进关系

8、爬虫提取信息的方式有两种:基于标签树组织结构的;基于文本搜索查找的

9、soup.find_all()函数:

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

其中name是对标签名称的检索字符串;attrs是对标签属性值的检索字符串,可标注属性检索;recursive: 是否对子孙全部检索,默认True;

string: <>…</>中字符串区域的检索字符串

10、衍生的find函数:

<>.find() 搜索且只返回一个结果,同.find_all()参数

<>.find_parents() 在先辈节点中搜索,返回列表类型,同.find_all()参数

<>.find_parent() 在先辈节点中返回一个结果,同.find()参数

<>.find_next_siblings() 在后续平行节点中搜索,返回列表类型,同.find_all()参数

<>.find_next_sibling() 在后续平行节点中返回一个结果,同.find()参数

<>.find_previous_siblings() 在前序平行节点中搜索,返回列表类型,同.find_all()参数

<>.find_previous_sibling() 在前序平行节点中返回一个结果,同.find()参数

原创粉丝点击