【Python技能树共建】python selectolax 模块 R15
【摘要】 Python selectolax 模块是什么在 Python 爬虫中 selectolax 模块用于解析网页源码,而且效率非常快。开源地址为:selectolax模块安装使用下述命令pip install selectolax 怎么用 上手案例from selectolax.parser import HTMLParserhtml = """<h1 id="title" data-upd...
Python selectolax 模块是什么
在 Python 爬虫中 selectolax
模块用于解析网页源码,而且效率非常快。
开源地址为:selectolax
模块安装使用下述命令
pip install selectolax
怎么用
上手案例
from selectolax.parser import HTMLParser
html = """
<h1 id="title" data-updated="20201101">梦想橡皮擦</h1>
<div class="post">Lorem Ipsum is simply dummy text of the printing and typesetting industry. </div>
<div class="post">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
"""
tree = HTMLParser(html)
ret = tree.css_first('h1#title').text()
print(ret)
导入模块 parser
中的 HTMLParser 类,就可以对网页源码进行格式化操作,然后执行 css_first()
方法,提取网页内容。
其语法格式类似于 cssselect
模块,即 CSS 选择器。
其中 .text()
方法为获取文本内容,.attributes
可以获取标签属性。
如果想要获取网页中多个元素,可以使用下述代码。
rets = [node.text() for node in tree.css('.post')]
print(rets)
更多的方法和属性
一些简单的属性如下所示。
from selectolax.parser import HTMLParser
import requests
html = requests.get('https://www.example.com/').text
parser = HTMLParser(html)
print(parser.head) # 头标签信息
print(parser.root) # 根标签信息
还可以移除指定标签,例如下述代码,用到的方法是 strip_tags()
。
from selectolax.parser import HTMLParser
tree = HTMLParser('<html><head></head><body><script></script><div>Hello world!</div></body></html>')
tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']
tree.strip_tags(tags)
print(tree.html)
# '<html><body><div>Hello world!</div></body></html>'
标签对象 Node
在上文中使用 css_first()
方法得到的是 Node 对象,其常用的属性有 attributes
,获取标签属性,child
获取标签子节点。
css()
在当前标签继续查找,html
属性用于获取当前标签的 HTML 代码,其余内容,阅读文档即可理解,不在赘述。
扩展场景
Selectolax 支持两个解析引擎:Modern 和 Lexbor。
默认情况下使用 Modern,二者大多数功能相同,差异如下所示。
Lexbor 后端处于测试阶段,缺少一些功能。
from selectolax.lexbor import LexborHTMLParser
html = """
<title>梦想橡皮擦</title>
<div id="updated">爬虫爱好者</div>
"""
parser = LexborHTMLParser(html)
ret = parser.root.css_first("#updated").text()
print(ret)
参考资料:官方手册
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)