爬虫(BeautifulSoup)

1. 什么是BeautifulSoup

Beautiful Soup(简称BS4)提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它
是一个工具箱,通过解析文档为tiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。
不需要考虑编码方式,除非文档没有指定,重新原始编码方式即可。

2. BS4的4种对象

2.1 BeautifulSoup对象
	获取标签属性
2.2 Tag对象
	Tag就是html中的一个标签,用BeautifulSoup就能解析出来Tag的具体内容,
	具体的格式为soup.name,其中name是html下的标签。
2.3 NavigableString对象
	用于获取标签内容
2.4 注释对象
	特殊的NavigableString对象

3. 解析器

3.1 什么是解析器:
	将文档解析为目标格式的文档
3.2 常见解析器:
	3.2.1 Python标准库
        BeautifulSoup(markup, "html.parser")
        Python的内置标准库
        执行速度适中
        文档容错能力强
        Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
	3.2.2 lxml
	    HTML 解析器	BeautifulSoup(markup, "lxml")
	    速度快
	    文档容错能力强
	    需要安装C语言库
	3.2.3 lxml
	    XML 解析器
	    BeautifulSoup(markup, ["lxml-xml"])
	    BeautifulSoup(markup, "xml")
	    速度快
	    唯一支持XML的解析器
	    需要安装C语言库
	3.2.4 html5lib
	    BeautifulSoup(markup, "html5lib")
	    最好的容错性
	    以浏览器的方式解析文档
	    生成HTML5格式的文档
	    速度慢
	    不依赖外部扩展

4. BS4的使用方法

4.1 导入第三方模块:
	import re
	from bs4 import BeautifulSoup
4.2 将html代码解析成BS4可以识别的格式:
	soup = BeautifulSoup(html, 'html.parser')
4.3 根据标签获取内容:
	soup.title							获取title标签内容
	soup.title.name						获取title标签名称
	soup.a.attrs						获取a标签里面的所有属性
	soup.a.attrs['href']				获取a标签中的href属性的值
	soup.a.get['href']					获取a标签中的href属性的值(常用)
	soup.a.string    					获取标签里面的内容(只有在此标签下没有子标签,或者只有一个子标
										签的情况下才能返回其中的内容,否则返回的是None)
	soup.a.get_text()					获取标签里面的内容(可以获得一个标签中的所有文本内容,包括子孙
										节点的内容,这是最常用的方法)
	soup.a.get('href')=''				对标签的属性进行修改
	soup.find_all('a')					找出所有符合条件的标签
	soup.find_all('a', class_="sister")	获取所有的a标签, 并且类名为"sister"
	soup.find_all(text=re.compile('story\d+'))		根据内容进行查找
	soup.select("title")				标签选择器
	soup.select(".sister")				类选择器(.类名)
	soup.select("#link1")				id选择器(#id名称)
	soup.select("input[type='password']")			属性选择器()

猜你喜欢

转载自blog.csdn.net/qq_43281189/article/details/87972141
今日推荐