一、beautifulsoup简介
1.beautifulsoup库为第三方库,需要自行安装
pip install beautifulsoup4
2.Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能,通过解析文档为用户提供需要抓取的数据,不需要太多代码就可以写出一个完整的应用程序。
3.Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码,因此不需要考虑编码方式,若文档没有指定一个编码方式,就需要说明一下原始编码方式。
简言之,BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。
二、beautifulsoup的四个对象
beautifulsoup所有对象可以归纳为4种: Tag
, NavigableString
, BeautifulSoup
, Comment
.
(1)BeautifulSoup:表示一个文档的全部内容
import urllib.request as ur
from bs4 import BeautifulSoup
html = ur.urlopen("http://bj.ganji.com/zpshichangyingxiao/") #获取链接响应,得到一个HTML字符串
bsObj = BeautifulSoup(html.read(),"html.parser") #解析得到的字符串,"html.parser"表示按照HTML进行解析
print(bsObj.h1)
#<h1>北京销售全职招聘</h1>
可以得到第一个<h1>标签
(2)Tag:与XML或HTML原生文档中的Tag相同,表示标签中的内容。
(3)NavigableString:获取标签内部的文字。
(4)Comment:查找HTML文档的注释标签。
三、快速查找最需要的标签:find()、findAll()
find(self, name=None, attrs={}, recursive=True, text=None,**kwargs)
findAll(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)
注:find()函数只获取查找到的第一个标签,findAll()获取HTML中所有该标签
属性:①self:代表当前对象,编程时不需要处理
②name:代表需要解析的标签名
③attrs:代表需要解析标签的属性,需要输入键值对。可以同时对同一属性的多个条件进行解析。例:
bsObj.findAll("a",{"class":{" a-circle-on",""}})
上述代码可同时对class属性的多个条件进行筛选。
④recursive:是一个布尔变量,默认为True。如果为True,findAll就会查找HTML代码中所有你想要查找的标签。如果为False,只查找文档的一级标签,即<html>标签。
print(bsO