Python使用pyQuery解析HTML内容

pyQuery 是 jQuery 的Python实现,如果对Web前端有了解,特别是有用过 jQuery 的,那么 pyQuery 将会是你处理HTML内容的最佳选择。教程基于如下环境:

  • 系统: Windows 7 64位
  • Python版本: 2.7

安装pyQuery

pyQuery 需要通过 ez_install 安装。

1,下载 ez_install.py 脚本,右键保存即可 https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py。方便安装,放在D盘根目录下。

2,运行 cmd (使用快捷键 Win+r,输入 cmd),执行如下命令:

d:
python ez_setup.py install

若出现如下错误,

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xb0 in position 1: ordinal not in range(128) Something went wrong during the installation. See the error message above.

是因为安装 setuptools 不成功。解决方法如下:

打开C:\Python27\Lib(Python的安装目录)下的 mimetypes.py 文件,找到大概256行的

default_encoding = sys.getdefaultencoding()

在这行前面添加三行:

if sys.getdefaultencoding() != 'gbk':      reload(sys)      sys.setdefaultencoding('gbk')  default_encoding = sys.getdefaultencoding()

保存后再次安装 ez_install,成功的话最终会输出

Installed e:\program files\python2\lib\site-packages\setuptools-5.7-py2.7.egg
Processing dependencies for setuptools==5.7
Finished processing dependencies for setuptools==5.7

3,安装 pyquery

easy_install pyquery

安装成功则最后输出

Installed e:\program files\python2\lib\site-packages\cssselect-0.9.1-py2.7.egg
Finished processing dependencies for pyquery

使用 pyQuery 解析HTML内容

代码实例如下:

from pyquery import PyQuery as pyqhtml = '''<html>    <title>这是标题</title><body>    <p id="hi">Hello</p>    <ul>        <li>list1</li>        <li>list2</li>    </ul></body></html>'''jq = pyq(html)print jq('title')            # 获取 title 标签的源码# <title>这是标题</title>print jq('title').text()     # 获取 title 标签的内容# 这是标题print jq('#hi').text()       # 获取 id 为 hi 的标签的内容# Helloli = jq('li')                # 处理多个元素for i in li:    print pyq(i).text()# list1# list2

所以对Web前端有所了解的话,使用起来真是非常得心应手。

更多用法可以查看官方的API文档:http://pyquery.readthedocs.org/en/latest/api.html,或是http://www.geoinformatics.cn/lab/pyquery/

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-01-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏bdcn

Flask学习笔记-使用PyCharm 顶

不得不PyCharm确实是开发Python优秀IDE,用于开发Flask更是没说的。

785
来自专栏小白安全

在线挑战详细攻略-《渗透测试笔记》

Step 01 > 目标地址:172.16.12.2 172.16.12.3(注意:本实验中一共有两个目标地址) 本机地址:172.16.11.2 第一...

2867
来自专栏小樱的经验随笔

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案           两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求...

2353
来自专栏木子昭的博客

从Github下载开源电子书

Github有很多开源电子书, 既然是开源的, 那就可以下载到本地访问, 这里以阮一峰老师的《ECMAScript 6入门》为例, 演示开源电子书的下载, 以及...

3885
来自专栏小狼的世界

用Git导出项目

Git没有SVN的导出功能,不能像 svn export url 那样,将某个版本的代码导出为不带版本控制文件的文件夹。

521
来自专栏闵开慧

eclipse中将java文件打成jar包

软件开发的最后一步就是软件的打包与发布,这也是很重要的一步。这几天在Eclipse中做了一个小软件,准备将其打成可运行的jar包进行发布,在网上搜了好多关于在E...

2844
来自专栏Ryan Miao

在idea中maven项目jdk编译version总是跳到1.5

bug描述 项目ide: idea 项目构建工具:maven bug现象:每次修改pom之后,idea自动扫描一遍,然后发现默认的compile级别跳到5....

30910
来自专栏飞雪无情的博客

工具 | 常用工具镜像网站又更新了(Golang、Chrome、VsCode、Android Studio等)

最近Golang,Android NDK、Chrome以及VSCode等都更新了新版,为了让大家更好的下载这些新版本的工具软件,特地对这些工具等进行了一次更新。

633
来自专栏java一日一条

我是如何统治内网的

工具:bettercap、metasploit、dnsspoof、armitage

101
来自专栏Youngxj

域名拦截实时短信邮件报警api教程

1574

扫描关注云+社区