博客
关于我
爬虫(4)—— Beautiful Soup
阅读量:332 次
发布时间:2019-03-04

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

Beautiful Soup入门

简介:

Beautiful Soup 库是解析、遍历、维护“标签树”的功能库
BeautifulSoup最主要的功能是从网页抓取数据,Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。

安装:

使用cmd命令行,输入命令:pip install beautifulsoup4

库的基本使用

from bs4 import BeautifulSoupsoup=BeautifulSoup('

data

','html.parser')soup=BeautifulSoup(open('D:abc.html'),'html.parser')

第一个参数html代码,第二个参数解析HTML的解析器

BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器

对Beautiful Soup库的检测

import requestsfrom bs4 import BeautifulSoupr = requests.get('http://python123.io/ws/demo.html')demo = r.textsoup = BeautifulSoup(demo, 'html.parser')print(soup.prettify())   # 将获取的代码以html结构进行输出

Beautiful Soup库解析器

在这里插入图片描述
Beautiful Soup类的基本元素
在这里插入图片描述
关于上述元素的一些使用

# 获取HTML的titleimport requestsfrom bs4 import BeautifulSoupr = requests.get('http://python123.io/ws/demo.html')demo = r.textsoup = BeautifulSoup(demo, 'html.parser')print(soup.title)# 获取HTML中的某个标签,如果存在多个相同的标签只会返回第一个标签tag = soup.aprint(tag)# 获取HTML的a标签的标签名print(soup.a.name)# 获取a标签父标签的标签名print(soup.a.parent.name)# 获取a标签父标签的父标签的标签名print(soup.a.parent.parent.name)# 获取标签的所有属性(标签的属性会以字典的形式输出)print(soup.a.attrs)# 获取标签某个属性的具体值print(soup.a.attrs['href'])# 获取标签中的具体信息print(soup.a.string)

HTML的遍历

标签树的下行遍历:

在这里插入图片描述
常见的使用

# 获取某个标签的儿子标签,返回值是包含所有儿子标签的列表head = soup.headprint(head)print(head.contents)# 遍历儿子节点(注换行符也算一个标签)for child in soup.body.children:    print(child)

标签树的上行遍历

在这里插入图片描述
例:对a标签的上行遍历

for parent in soup.a.parents:    if parent is None:        print(parent)    else:        print(parent.name)

标签树的平行遍历

在这里插入图片描述
注:
1、平行遍历必须发生在同一个父节点下的各个节点间
2、平行遍历不一定得到标签,需要进行一定的判断处理
3、平行遍历中,文本字符串也会被看作标签

例:

# 对a标签进行后续遍历for sibling in soup.a.next_siblings:    print(sibling)# 对a标签进行前续遍历for sibling in soup.a.previous_siblings:    print(sibling)

信息组织的提取

find_all()

在这里插入图片描述
常见的用法:

# 查找a标签a=soup.find_all('a')print(a)# 查找多个标签a=soup.find_all(['a','p'])print(a)# 查找HTML中有那些标签for tag in soup.find_all(True):    print(tag.name)# 查找含有course属性值的p标签print(soup.find_all('p',{   'course'}))# 查找id为link1的标签print(soup.find_all(id='link1'))

扩展方法

在这里插入图片描述

转载地址:http://csgh.baihongyu.com/

你可能感兴趣的文章
C# WPF开源控件库:MahApps.Metro
查看>>
使用QT实现一个简单的登陆对话框(纯代码实现C++)
查看>>
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
查看>>
GLFW 源码 下载-编译-使用/GLAD配置
查看>>
针对单个网站的渗透思路
查看>>
Typescript 学习笔记六:接口
查看>>
Scala字符串与容器
查看>>
关于JTAG,你知道的和不知道的都在这里
查看>>
【CTF】CTFHub 技能树 文件头检查 writeup
查看>>
web服务器-并发服务器2
查看>>
【SqlServer】如何把本地SqlServer数据库部署到远程服务器上
查看>>
【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
查看>>
第9章 用户自己建立数据类型
查看>>
02、MySQL—数据库基本操作
查看>>
RedHat Linux-配置YUM仓库
查看>>
Redis数据类型
查看>>
1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
查看>>
1907: 树的路径覆盖
查看>>
OpenJDK1.8.0 源码解析————HashMap的实现(一)
查看>>
MySQL-时区导致的时间前后端不一致
查看>>