parsel
parsel
的API
和Scrapy
选择器的API
高度相似,因为Scrapy
选择器的是二次封装了parsel
,类似于request
和urllib
.
parsel
可以解析XML
和HTML
,支持Xpath
和CSS
选择器对内容的提取,同时融合了正则表达式,可以说是前面几个工具的综合.
使用实例
html = '''
<div id='container'>
<li class='list'>first</li>
<li><a href = 'item2'>second</a></li>
<li><a href = 'item3'><span>third</span></a></li>
<li><a href = 'item4'>fourth</a></li>
<li><a href = 'item5'>fifth</a></li>
</div>
'''
from parsel import Selector
selector = Selector(text = html) ##调用Selector类构造一个Selector对象
css1 = selector.css('#container') ##传入css选择器
css2 = selector.css('li') ##传入css选择器,这个返回的是一个可迭代对象
xml1 = selector.xpath('//li[contains(@class,"list")]')
xml2 = selector.xpath('//li/a[@href="item2"]')
for item in css1:
print(item)
print(item.xpath(".//text()").get()) ##遍历获取文本内容
result_href = xml2.css('a::attr(href)').get() ## css获取属性
print(result_href)
result_href = xml2.xpath('//a/@href').get() ##xpath获取属性
print(result_href)
## 正则的使用
re = selector.re('<li><a.*?>.*?</a></li>')
print(re)
re = selector.re_first('<li><a.*?>.*?</a></li>')
print(re) ##返回第一个匹配字符串