03网页解析器

xiaoxiao2021-02-27  216

网页解析器
从网页中提取有价值数据的工具,也会提取到网页中所有的url,用于后续的访问。 也就是说网页解析器会将网页下载器得到的html网页字符串作为输入,最后提取到①价值数据②新URL列表(待爬取)
Python网页解析器
1.正则表达式(最直观,将网页当作是一个字符串,进行模糊匹配但如果对于较为复杂的文档,会相当复杂)
2.html.parser(python自带)
3.beautifulSoup(第三方插件)
4.lxml
其中,BeautifulSoup既可以使用html.parser又可以使用lxml作为它的解析器。

正则是通过模糊匹配来进行爬取数据,而2,3,4则是结构化解析进行爬取数据。

什么是结构化解析

DOM(Document Object Model)树,以树的形式进行上下级的遍历和访问 会将整个网页当作是一个Document对象

Beautiful Soup

Python第三方库,用于HTML或XML中提取数据 官网 https://www.crummy.com/software/BeautifulSoup/

官网下载Beautiful Soup最新版本4.6.0 之后使用 import bs4 print(bs4) 来检测是否已经成功安装了beautifulSoup4

网页解析器-Beautiful Soup语法

①根据Html网页可以创建一个BeautifulSoup对象,创建这个对象的同时,就把这个文档加载为一个DOM树 ②然后根据DOM树,就可以进行各种节点的搜索 这里面有两个方法 find_all方法:会搜索到所有满足条件的节点 find方法:会搜索到第一个满足条件的节点 其中find方法和find_all方法的参数是完全一致的。节点搜索,也可根据节点的属性,名称和文字进行搜索。 ③得到节点后,我们就可以进行节点的访问。如节点的名称,节点的属性,节点的文字。

举个栗子 Python 节点名称:a 节点属性:href=”123.html” class=”artical_link” 节点内容:Python from bs4 import BeautifulSoup

根据HTML网页字符串创建BeautifulSoup对象

soup = BeautifulSoup( ‘html_cont’,#HTML文档字符串 ‘html.parser’, #HTML解析器 from_encoding=’utf-8’ #HTML文档编码 )

搜索节点(find_all,find)
方法:find_all(name,attrs,string)
查找所有标签为a的节点

soup.find_all(‘a’)

查找所有标签为a,链接符合/view/123.html形式的节点

soup.find_all(‘a’,href=’/view/123.htm’) soup.find_all(‘a’,href=re.compile(r’/view/123.htm’))

查找所有标签为div ,class为abc,文字为Python的节点

soup.find_all(‘div’,class_=’abc’,string=’Python’)

访问节点的信息
获取查找到的节点的标签名字

node.name

获取查找到的a节点的href属性

node[‘href’]

获取查找到的a节点的链接文字

node.get_text()

转载请注明原文地址: https://www.6miu.com/read-10033.html

最新回复(0)