Parsel是一个Python库,用于解析HTML和XML文档。它提供了一种简单的CSS选择器语法,用于从文档中提取数据。以下是Parsel的使用方法:
1. 安装Parsel
可以使用pip安装Parsel:
```
pip install parsel
```
2. 导入Parsel
在Python脚本中导入Parsel:
```python
from parsel import Selector
```
3. 创建Selector对象
使用Selector类创建一个Selector对象,传入要解析的HTML或XML文档:
```python
html = '<html><body><h1>Hello, World!</h1></body></html>'
selector = Selector(text=html)
```
4. 使用CSS选择器提取数据
使用CSS选择器语法从文档中提取数据。例如,从上面的HTML文档中提取标题:
```python
title = selector.css('h1::text').get()
print(title)
```
输出:
```
Hello, World!
```
5. 链式调用选择器
可以使用链式调用选择器来提取更复杂的数据。例如,从以下HTML文档中提取所有的链接:
```html
<html>
<body>
<ul>
<li><a href="https://www.python.org">Python</a></li>
<li><a href="https://www.djangoproject.com">Django</a></li>
<li><a href="https://www.scrapy.org">Scrapy</a></li>
</ul>
</body>
</html>
```
```python
links = selector.css('ul > li > a::attr(href)').getall()
print(links)
```
输出:
```
['https://www.python.org', 'https://www.djangoproject.com', 'https://www.scrapy.org']
```
6. 使用正则表达式选择器
Parsel还支持使用正则表达式选择器,可以使用re()方法指定正则表达式。例如,从以下HTML文档中提取所有的邮件地址:
```html
<html>
<body>
<ul>
<li>alice@example.com</li>
<li>bob@example.com</li>
<li>charlie@example.com</li>
</ul>
</body>
</html>
```
```python
emails = selector.css('li::text').re(r'\b[A-Za-z0-9._%!](MISSING)+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b')
print(emails)
```
输出:
```
['alice@example.com', 'bob@example.com', 'charlie@example.com']
```
这就是Parsel的基本使用方法。通过使用CSS选择器语法和正则表达式选择器,可以从HTML和XML文档中提取数据。