《爬虫学习》(四)(使用lxml,bs4库以及正则表达式解析数据)

时间:2024-01-26 08:50:08

《爬虫学习》(四)(使用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.还有一种方法解析数据:正则表达式

以下内容从别人博客转载,方便复习