Python–BeautifulSoup模块的使用
一、BeautifulSoup模块简介
BeautifulSoup是Python的一个库,主要功能是从网页爬取我们需要的数据。它将html解析为对象进行处理,将网页全部页面转变为字典或数组,其内置函数有对html内容进行筛选的作用。主要用于爬虫。
BeautifulSoup将复杂的html文档转换为树形结构,每一个节点都是一个对象,这些对象可以归纳为:Tag(标签)、NavigableString(注释内容,但是输出不包括注释符,字符串)。
二、BeautifulSoup的使用
-
BeautifulSoup的安装:一般Python3以上的IDLE有自带,直接用就好。如果没有的需要用pip进行安装,安装命令为:
pip install beautifulsoup
-
BeautifulSoup的用法:
#首先需要导入库: from bs4 import BeautifulSoup #其它可能需要用到的库 import utllib import re import urllib.request #创建实例(以百度网页为例,这是我保存的简约百度html文件,放在.py文件同目录下): file=open('./baidu.html','rb') html=file.read() #创建对象: bs=BeautifulSoup(html,'html.parser') #bs为我们稍后筛选遍历的对象,html.parser为我们需要用的解析器 #输出html文件的标题: print(bs.title) #输出:<title>百度一下,你就知道</title> #输入关于a标签的内容: print(bs.a) #输出:<a class="toindex" href="https://www.baidu.com/">百度首页</a> #输出两个</head>之间的所有内容 print(bs.head) #若不需要打印Tag,比如<title>,可这样输出,输出不包括注释: print(bs.title.string) #输出:百度一下,你就知道 #用attrs拿到标签里的所有属性值,用字典方式保存 print(bs.a.attrs) print(bs.head.contents)#文档遍历,将</head>之间的内容用列表形式输出 print(bs.head.contents[1])#访问列表里的元素 #文档的搜索 #字符串过滤,会查找与字符串完全匹配的标签,如abc则不会被匹配 t_list=bs.find_all('a') print(t_list) #使用find_all()函数查找所有的a标签,t_list为暂时使用的一个对象 #正则表达式搜索,re.compile(),包含a的标签都可以被显示 t_list=bs.find_all(re.compile('a')) print(t_list) #查找参数: t_list=bs.find_all(id='head') for item in t_list:#打印多个内容 print(item) #或这种形式: t_list=bs.find_all(text=['hao123','百度']) for item in t_list:#打印多个内容 print(item) #css选择器,更加灵活,select后可指定多种内容,如:标签,类名,id,属性,子标签等等 t_list=bs.select('title')#按标签 t_list=bs.select('.mnav')#按类名 t_list=bs.select('#u1')#按id t_list=bs.select('a[class="bri"]')#按属性 t_list=bs.select('head>title')#按子标签