PyQuery基本操作介绍

PyQuery为Python提供一个类似于jQuery对HTML的操作方式,可以使用jQuery的语法对html文档进行查询操作。
本文以百度首页为例来介绍PyQuery的一些基本操作。

初始化pyquery

from pyquery import PyQuery as pq

doc = pq(url='http://www.baidu.com')
print(type(doc))

<class 'pyquery.pyquery.PyQuery'>

# 获取导航链接的父元素(id='u1')
products = doc('#u1') print(type(products))

<class 'pyquery.pyquery.PyQuery'>

link_index_first = products('a:first')
link_index_last = products('a:last')
link_index_custom = products('a:eq(2)') print(type(link_index_first))

<class 'pyquery.pyquery.PyQuery'>

可以通过PyQuery的text()方法来获取其对应的文字

print(link_index_first.text())
print(link_index_last.text())
print(link_index_custom.text())

糯米

更多产品

hao123

也可以通过PyQuery的attr()方法来获取元素的属性

print(link_index_first.attr('name'))

tj_trnuomi

下面来遍历所有导航按钮。 P.S. 注意此时link的类型是“lxml.html.HtmlElement”

# 遍历所有导航链接,并显示链接的name属性和在网页上显示的文字
links = products('a')
for link in links:
id_name = link.get('name')
text = link.text
print('Name: {0: <15}\tText: {1: <15}'.format(id_name, text))

Name: tj_trnuomi Text: 糯米

Name: tj_trnews Text: 新闻

Name: tj_trhao123 Text: hao123

Name: tj_trmap Text: 地图

Name: tj_trvideo Text: 视频

Name: tj_trtieba Text: 贴吧

Name: tj_login Text: 登录

Name: tj_settingicon Text: 设置

Name: tj_briicon Text: 更多产品

下面介绍一下初始化PyQuery时的另外两种参数

  • 直接转换字符串
d = pq("<html></html>")
d = pq(etree.fromstring("<html></html>"))
  • 读取文件
d = pq(filename=path_to_html_file)

另外,在处理需要编码的文件时可以使用如下的方法:

from lxml.html import HTMLParser, fromstring
UTF8_PARSER = HTMLParser(encoding='utf-8')
with open(page, encoding='utf-8') as filehandler:
file_contents = filehandler.read()
doc = pq(fromstring(file_contents, parser = UTF8_PARSER))

PyQuery基本操作介绍的更多相关文章

  1. vim编辑器基本操作介绍

    vim编辑器基本操作介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 可能很多小伙伴都听说过vi编辑器或是vim编辑器.它们是Unix和Linux世界最流行的编辑器之一,他们的特 ...

  2. SpringBoot中Redis的set、map、list、value、实体类等基本操作介绍

    今天给大家介绍一下SpringBoot中Redis的set.map.list.value等基本操作的具体使用方法 上一节中给大家介绍了如何在SpringBoot中搭建Redis缓存数据库,这一节就针对 ...

  3. Activiti工作流(一)之基本操作介绍

    工作流的概念: 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或 ...

  4. 基于MyBatis3.0.6的基本操作介绍

    每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 .SqlSessionFactory本身是由SqlSessionFa ...

  5. tensorflow基本操作介绍

    1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...

  6. JDBC基本操作介绍

    一 .JDBC主要的API介绍 JDBC为开发人员提供了一套标准的API,都是由JAVA语言编写的类和接口.用于连接数据库和执行SQL语句.JDBC也是JAVA核心类库的一部分,位于Java.sql包 ...

  7. Jquery EasyUI的添加,修改,删除,查询等基本操作介绍

    http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套 ...

  8. 【HBase】表模型和基本操作介绍

    目录 HBase表模型 常用Shell操作 HBase表模型 创建一个hbase表,必须要有表名和列族名 列族 -- columnFamily,就是上图中的Column Family1 userInf ...

  9. redis基本操作介绍

    一.字符串 单个设置:set key value,如果key不存在则设置键值对,如果存在则修改 批量设置:mset key1 value1 [key2 value2] 单个获取:get key,如果k ...

随机推荐

  1. c# 弹出框-后台调前台函数

    前台代码: <script src="../../../Common/Scripts/Order/popup.js" type="text/javascript&q ...

  2. pcduino通过USB方式刷机

    最近买了块pcduino来玩,一开始也不知道怎么入手使用,就想先学着网上来刷机,可以用TF卡来刷机,也可以用U盘来刷机.由于手上只有优盘,所以采用了第二种方式.具体方法参考了网上. 本文非原创,原文来 ...

  3. include .h 以及.cpp的记录

    VC include 路径解析要了解vc中使用#include命令包含头文件所搜寻的路径,必须先了解vc中的几种路径:1. 系统路径 系统路径在vc中是"Tools->Options- ...

  4. 测试jsp

    一. get.jsp <%@ page contentType="text/html;charset=UTF-8"%> <%@ page import=" ...

  5. openwrt下和云端通讯的例程,

    openwrt下和云端通讯的例程 ibcurl 官方文档请参考这里 http://curl.haxx.se/libcurl/c/curl_easy_setopt.html 刚接触 libcurl的时候 ...

  6. 【转】GCC4.6编译的warning -Werror

    原文网址:http://blog.sina.com.cn/s/blog_605f5b4f0101bct7.html New warnings for unused variables and para ...

  7. 【转】ubuntu12.04下安装chrome浏览器

    原文网址:http://blog.163.com/zhou_411424/blog/static/197362156201331931313549 下载google chrome deb包 32位:h ...

  8. Axure 原型设计工具画业务流程图

    加入人人都是产品经理[起点学院]产品经理实战训练营,BAT产品总监手把手带你学产品点此查看详情! 软件行业从业6年,流程图看过太多,大部分流程图是在考验阅读者的理解能力,近期在设计公司新版APP,对流 ...

  9. sprig——jar包

    Struts. Hibernate.Spring这类的框架给我们开发带来非常大的好处,让我们更加快速.有效的开发.所以我们在开发中通常都会用到各种框架,每个框架 都有很多jar包,每个jar都有各自不 ...

  10. All X(思维)

    All X Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Subm ...