今天写一篇最近刚学习的一个第3方库pyquery,pyquery比bs4,lxml更强大的一个网页解析工具。

什么是pyQuery

Pyquery是python的第3方库,PyQuery库也是一个非常强大又灵活的网页解析库,它提供了和jQuery 类似的语法来解析HTML 文梢,支持css 选择器,使用非常方便。Beautifu l Soup 一样,初始化PyQuery 的时候,也需要传入HTML 文本来初始化一个PyQue1y对象。它的初始化方式有多种,比如直接传入字符串,传入URL,传人文件名

官方文档:http://pyquery.readthedocs.io/en/latest/

安装PyQuery

# pip安装
pip install pyquery

PyQuery使用

写一个简单的html供下面学习

text =
'''
<html>
<body>
<div id="test">
<ul class="list">
<li class="item-0"><a href="link1.html">今天天气</a></li>
<li class="item-1"><a href="link2.html">明天天气</a></li>
<li class="item-2"><a href="link3.html">后天天气</a></li>
<li class="item-3"><a href="link4.html">周末天气</a></li>
</ul>
</div>
</body>
</html>
'''

基本css选择器

# 导入pyquery
from pyquery import PyQuery as pq
# 创建对象
doc = pq(text)
# 通过css选择器先查找id再查找class
item = doc('#test .list')
print(item) 代码结果:
<ul class="list">
<li class="item-0"><a href="link1.html">今天天气</a></li>
<li class="item-1"><a href="link2.html">明天天气</a></li>
<li class="item-2"><a href="link3.html">后天天气</a></li>
<li class="item-3"><a href="link4.html">周末天气</a></li>
</ul>

查找子节点

# 导入pyquery
from pyquery import PyQuery as pq
# 创建对象
doc = pq(text)
# 通过css选择器先查找id再查找class
item = doc('#test .list')
# 查找子节点li
child = item.children('li')
# 或者使用find()函数
# child = item.find('li')
print(child)

代码结果:
<li class="item-0"><a href="link1.html">今天天气</a></li>
<li class="item-1"><a href="link2.html">明天天气</a></li>
<li class="item-2"><a href="link3.html">后天天气</a></li>
<li class="item-3"><a href="link4.html">周末天气</a></li>

查找父节点

# 导入pyquery
from pyquery import PyQuery as pq
# 创建对象
doc = pq(text)
# 通过css选择器先查找id再查找class
item = doc('#test .list')
# 查找父节点
container = item.parent()
print(container) 代码结果:
<div id="test">
<ul class="list">
<li class="item-0"><a href="link1.html">今天天气</a></li>
<li class="item-1"><a href="link2.html">明天天气</a></li>
<li class="item-2"><a href="link3.html">后天天气</a></li>
<li class="item-3"><a href="link4.html">周末天气</a></li>
</ul>
</div>

查找兄弟节点

# 导入pyquery
from pyquery import PyQuery as pq
# 创建对象
doc = pq(text)
# 查找兄弟其中一个
item = doc('.item-0')
# 查找兄弟节点
xiongdi = item.siblings('li')
print(xiongdi) 代码结果:
<li class="item-1"><a href="link2.html">明天天气</a></li>
<li class="item-2"><a href="link3.html">后天天气</a></li>
<li class="item-3"><a href="link4.html">周末天气</a></li>

遍历读取内容

1、遍历读取a标签

这个地方需要使用一个方法items(),使用该方法后得到一个生成器

# 导入pyquery
from pyquery import PyQuery as pq
# 创建对象
doc = pq(text)
item = doc('.list a').items()
for i in item:
print(i) 代码结果:
<a href="link1.html">今天天气</a>
<a href="link2.html">明天天气</a>
<a href="link3.html">后天天气</a>
<a href="link4.html">周末天气</a>

2、获取href的值

这个地方需要用到attr()方法

# 导入pyquery
from pyquery import PyQuery as pq
# 创建对象
doc = pq(text)
item = doc('.list a').items()
for i in item:
print(i.attr('href')) 代码结果:
link1.html
link2.html
link3.html
link4.html

3、获取a标签下的文字

通过调用text()方法来实现

# 导入pyquery
from pyquery import PyQuery as pq
# 创建对象
doc = pq(text)
item = doc('.list a').items()
for i in item:
print(i.text()) 代码结果:
今天天气
明天天气
后天天气
周末天气

下一篇通过简单的案例更加深刻的了解pyquery库~~~~

写了一些简单的介绍,还是那一句话,方法多多种,喜欢那种用那种~~~大家喜欢的话,也可以点个关注哈

爬虫---PyQuert简介的更多相关文章

  1. Python 爬虫一 简介

    什么是爬虫? 爬虫可以做什么? 爬虫的本质 爬虫的基本流程 什么是request&response 爬取到数据该怎么办 什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间 ...

  2. 【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫

    详细可参考 (1)书箱:<这就是搜索引擎><自己动手写网络爬虫><解密搜索引擎打桩实践> (2)[搜索引擎基础知识1]搜索引擎的技术架构 (3)[搜索引擎基础知识2 ...

  3. 97、爬虫框架scrapy

    本篇导航: 介绍与安装 命令行工具 项目结构以及爬虫应用简介 Spiders 其它介绍 爬取亚马逊商品信息   一.介绍与安装 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, ...

  4. 爬虫框架 Scrapy

    一 介绍 crapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可用 ...

  5. Python 爬虫七 Scrapy

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  6. 爬虫框架之Scrapy

    一.介绍 二.安装 三.命令行工具 四.项目结构以及爬虫应用简介 五.Spiders 六.Selectors 七.Items 八.Item Pipelin 九. Dowloader Middeware ...

  7. 爬虫基础线程进程学习-Scrapy

    性能相关 学习参考:http://www.cnblogs.com/wupeiqi/articles/6229292.html 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时 ...

  8. 爬虫、框架scrapy

    阅读目录 一 介绍 二 安装 三 命令行工具 四 项目结构以及爬虫应用简介 五 Spiders 六 Selectors 七 Items 八 Item Pipeline 九 Dowloader Midd ...

  9. 爬虫之Scrapy详解

    性能相关 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢. import requests def fetch_async(url): ...

随机推荐

  1. 微信小程序中换行,空格(多个空格)写法

    在小程序中HTML的网页实体无法正常使用,小程序中的写法为: 一.空格,换行 <text>你好!\t七月流火啊!\n我在下一行</text> \t 空格( 多个只会显示一个空格 ...

  2. 微信小程序开发者工具构建npm提示没找到node_modules目录

    一.官网给的文档写的不够充分,需要你充分理解npm的使用方法,才能明白的: 二.第一步:先在你电脑上安装npm 参考下面文章 https://www.cnblogs.com/zmdComeOn/p/1 ...

  3. gcc栈溢出保护机制:stack-protector

    关键词:stack-protector.stack-protector-strong.stack-protector-all等等. 1. gcc栈保护机制stack-protector简介 gcc提供 ...

  4. X短期项目总结

    刚退出了一个项目,简称为X项目.这个项目中,还是遇到了不少问题,也解决了部分问题,还是挺有收获的,所以总结一下. 虽然标题说是短期项目总结,但其实这个项目并不短, 持续了约3年时间. 所谓的短,只是我 ...

  5. linux,xshell命令

     一. linux  1.Linux发行版 <1> 常见的发行版本如下: Ubuntu Redhat Fedora openSUSE Linux Mint Debian Manjaro M ...

  6. mysql和oracle分页

    mysql分页 关键字limit,limit m,n 其中m表示起始位置的下标,下标从0开始.n表示要显示的条数,比如要查询一个表的第2到5条数据. ,; oracle分页 关键字rownum, ro ...

  7. 参数检查(@property)

    绑定属性时,如果直接把属性暴露出去,虽然写起来很简单,但无法对参数进行检查,导致属性被随便修改 因此,可以通过在类内定义get()获取属性值,定义set()对属性值进行设定并对设定值进行检查 但通过定 ...

  8. ES5提取公共变量

    在ES5中,请求地址前缀等需要作为公共变量提出. 则需在common.js写上 Object.defineProperty(window,'base',{ value:"http://xx. ...

  9. Java Arrays类方法

    1:概述 主要谈一谈 Java使用fork/koin类 实现的并发排序 以及对于Stream流的支持的splitetor mismatch()   ->  寻找两个数组 第一次出现数据不一致的下 ...

  10. spring的事件机制实战

    理论 在分布式场景下,实现同步转异步的方式有三种方式: 1.异步线程池执行:比如借助@Asyn注解,放到spring自带的线程池中去执行: 2.放到消息队列中,在消费者的代码中异步的消费,执行相关的逻 ...