parse中可以使用css及xpath对html和xml进行解析,其中主要用到的方法如上图所示,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。方法使用代码示例如下,关于xpath相关方法的使用可以参照:Python爬虫学习(二):xpath解析html-CSDN博客
from parsel import Selector
def parseDemo():
html = '''
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul>
</div>
'''
# 创建一个selector对象
res = Selector(text=html, encoding='utf-8')
# 通过css方法获取class为item-0的元素
cssRes = res.css('.item-0')
print(cssRes)
# 返回的类型为<class 'parsel.selector.SelectorList'>
print(type(cssRes))
xpathRes = res.xpath('//li/a')
print(xpathRes)
# 返回的类型同为<class 'parsel.selector.SelectorList'>
print(type(xpathRes))
# 基于上述返回类型可以使用for循环进行相关逻辑操作
for cssres in cssRes:
# getall方法是获取所有
print(cssres.xpath('.//text()').getall())
# get方法是获取第一个
result1 = res.css('.item-0 a::attr(href)').get()
print(result1)
result2 = res.xpath('//li[contains(@class, "item-0") and contains(@class, "active")]/a/@href').get()
print(result2)
if __name__ == "__main__":
parseDemo()