Python使用类似JQuery的css选择器语法来处理html文档

楚天乐 1084 0 条

Scrapy作为一个爬虫开发框架提供了内置的Selector组件来处理html文档,然而他的语法实在是有点诡异,大约平日前端开发用惯了JQuery的缘故吧,总想找一款具有类似语法的python组件来帮助处理html文档。

技术选型

稍微google下(感谢搜索引擎赐予我的力量。。),就找到了两款类似功能的组件:

PyQuery: 
https://pythonhosted.org/pyquery/index.html#full-documentation

BeautifulSoup 4
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#

选择哪个呢?

  1. 首先看一下文档功能吧
    对于pyuery,截图中可以看出它实现了类似JQuery的css选择器语法,满足要求。同时文档目录还显示,它除了支持css选择器外,还可以操作dom,可以进行ajax操作。先不管细节,至少看上去是满足要求的。
    ![pyquery.png][1]

对于BeautifulSoup,很明显他也满足我们的基本要求。支持css选择器。
![BeautifulSoup4.png][2]

  1. 成熟度
    PyQuery当前版本1.2.4,而BeautifulSoup已经是第四版本了。BeautifulSoup 4要成熟些。

  2. 文档
    PyQuery也不知道是功能有限的缘故,还是文档做的不好的缘故,文档内容页少的可怜。而BeautifulSoup 4文档蛮多,大概看了眼觉得写得蛮详细。此外,BeautifulSoup 4还有中文文档,对那些鸟语不行的朋友可能很有帮助。

所以,这里技术选型我就直接选择BeautifulSoup 4了。

BeautifulSoup 4简单功能

  1. 先下载一个网页的html代码回来存成文件, 比如embed_code.html。
    我这里就不给出具体html文档了,随便找一个都可以的

  2. 处理html文档,第一步必然是创建一个BeautifulSoup对象

    
    from bs4 import BeautifulSoup

读取文件中的html代码

html = ""
with open('embed_code.html', 'r', encoding='UTF-8') as content_file:
html = content_file.read()

创建soup对象

soup = BeautifulSoup(html, 'html.parser')


2. 利用soup对象执行各种操作

取出所有class是commentMessage的dom元素

elements = soup.select(".commentMessage")
for element in elements:
print(element.span.get_text()) # 打印每一个commentMessage中span元素里的文本



  [1]: http://blog.shyclouds.net/usr/uploads/2018/08/3776371987.png
  [2]: http://blog.shyclouds.net/usr/uploads/2018/08/778076310.png


发表我的评论
昵称 (必填)
邮箱 (必填)
网址