《爬虫学习》(四)(使用lxml,bs4库以及正则表达式解析数据)
《爬虫学习》(四)(使用lxml,bs4库以及正则表达式解析数据)
1.XPath:
XPath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历。
工具:扩展商店里搜索:XPath Helper(我是QQ浏览器)
XPath的语法:
使用举例:
2. lxml库:
lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据
下载:pip install lxml
基本使用:在lxml中使用xpath语法
3.bs4库的使用:
和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。
lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM(Document Object Model)的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。
BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。
Beautiful Soup 3 目前已经停止开发,推荐现在的项目使用Beautiful Soup 4。
安装:pip install bs4
bs4的简单使用:
from bs4 import BeautifulSoup html = """ 一段HTML代码 """ #创建 Beautiful Soup 对象 # 使用lxml来进行解析 soup = BeautifulSoup(html,"lxml") print(soup.prettify())
举例使用:
# bs4库的使用 # from bs4 import BeautifulSoup # html = 'xxxx' # bs4底层由lxml实现 # bs = BeautifulSoup(html, 'lxml') # 1.获取所有span标签 # spans = bs.find_all('span') # for span in spans: # print(span) # 2.获取前二个span标签(limit=2)中的第二个span标签([1]) 下标:从0开始 # span = bs.find_all('span', limit=2)[1] # print(span) # 3.获取所有dl中class等于bottom的标签 # dls = bs.find_all('dl', class_='bottom') # for dl in dls: # print(dl) # 或者使用attrs标签(attrs=一个字典) # dls = bs.find_all('dl', attrs={'class':'bottom'}) # for dl in dls: # print(dl) # 4.获取所有a标签的href属性 # aList = bs.find_all('a') # for a in aList: # # 1.使用下标方法(推荐) # href = a['href'] # # 2.使用attrs方式 # href2 = a.attrs['href'] # print(href2)
4.还有一种方法解析数据:正则表达式
以下内容从别人博客转载,方便复习