爬虫学习笔记(六)PyQuery模块

PyQuery模块也是一个解析html的一个模块,它和Beautiful Soup用起来差不多,它是jquery实现的,和jquery语法差不多,会用jquery的人用起来就比较方便了。

Pyquery需要依赖lxml模块,不装的话,使用会报错。

安装

1

2

pip install lxml

pip install pyquery

解析html的3种方式

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

from pyquery import PyQuery

html = """

<html><head><title>BestTest</title></head>

<body>

<div>

<p class="content">最专业的软件测试培训

<a href="http://www.besttest.cn" class="link" id="link1"><!--首页--></a>,

<a href="http://www.besttest.cn/page/3.html" class="link" id="link2">BestTest性能测试</a> and

<a href="http://www.besttest.cn/page/47.html" class="link" id="link3" target="_blank">BestTest自动化测试</a>;

课程详情请点击上面的链接.</p>

<p class="content">.这是广告植入.</p>

<p class="title">BestTest is best</p>

</div>

</body>

</html>

"""

#解析html的3种方式

doc = PyQuery(url=‘http://www.nnzhp.cn‘) #指定url

doc2 = PyQuery(html) #指定html字符串

doc3 = PyQuery(filename=‘index.html‘) #指定文件

print(doc)

print(doc2)

print(doc3)

css选择器

css在bs模块里面也用过,用法差不多。具体如下

1

2

3

4

5

6

7

8

# css选择器

print(doc2(‘.link‘)) #通过class

print(doc2(‘#link1‘)) #通过id

print(doc2(‘.content,#link1‘)) #找到所有class为content和id为link1的

print(doc2(‘.content #link1‘)) #在content下面找到id为link1的元素

print(doc2(‘a‘))#找到所有的a标签

print(doc2(‘[href]‘))#找到所有带有href属性的元素

print(doc2(‘a[target=_blank]‘)#找到a标签下面target为_blank的

常用方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

eq方法,获取第几个元素

a_tags = doc2(‘a‘)

print(a_tags.eq(0))#a标签里面第一个

print(a_tags.eq(1))#a标签里面第二个

# items()

#如果找到多个元素的话,想循环取元素的话,就得用.items()方法,items就是为了循环用的

a_tag = doc2(‘a‘)

for a in a_tag.items():

print(a.text())

# text() 、html()

#text()方法是获取元素里面的文字的,html()是获取元素的html

a=doc2(‘.content‘)

print(a.html()) #html格式的

print(a.text()) #只有里面的文字

#find方法,查找元素

print(doc2.find(‘p‘).find(‘a‘))#从所有的p标签里面找到a标签

print(doc2.find(‘p‘))#找到所有的p标签

print(doc2.find(‘.content‘))#找到所有class为content的

#filter方法,用来筛选

print(doc2.find(‘a‘).filter(‘#link1‘)) #先找到a标签,然后从a标签里面筛选出来id为link1的

#attr方法,获取属性

print(doc2(‘#link1‘).attr((‘href‘)))#获取id为link1的href的属性值

原文地址:https://www.cnblogs.com/chunyanxu/p/8732785.html

时间: 2024-11-04 10:16:43

爬虫学习笔记(六)PyQuery模块的相关文章

python学习笔记(六):常用模块

一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件,包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果你想导入其他目录下的模块,那么这个目录必须是一个包才可以导入. 导入模块 1 2 3 4 5 import module #导入模块 from modul

python学习笔记六之模块下(基础篇)

shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb") >>> s['x'] = ['a','b','c'] >>> s['x'].append('d') >>> s['x'] ['a', 'b', 'c'] 解析:当你在shelve对象中查找元素的时候,这个对象都会根据已经存储的版本进行重新构建,当你将

[爬虫学习笔记]Url过滤模块UrlFilter

        Url Filter则是对提取出来的URL再进行一次筛选.不同的应用筛选的标准是不一样的,比如对于baidu/google的搜索,一般不进行筛选,但是对于垂直搜索或者定向抓取的应用,那么它可能只需要满足某个条件的url,比如不需要图片的url,比如只需要某个特定网站的url等等.Url Filter是一个和应用密切相关的模块. using System; using System.Collections.Generic; using Crawler.Common; namespa

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb

python之raw_input()(学习笔记六)

python之raw_input()(学习笔记六) 我们经常使用raw_input()读取用户的输入,如下例子所示: >>> name = raw_input('please input your name:'),截图如下: 下面简单说下,raw_input()与if搭配使用,脚本如下: #!/usr/bin/env python # -*- coding:utf-8 -*- birth = raw_input('birth:') if birth < 2000: print '0

swift学习笔记(六)析构过程和使用闭包对属性进行默认值赋值

一.通过闭包和函数实现属性的默认值 当某个存储属性的默认值需要定制时,可以通过闭包或全局函数来为其提供定制的默认值. 注:全局函数结构体和枚举使用关键字static标注    函数则使用class关键字标注 当对一个属性使用闭包函数进行赋值时,每当此属性所述的类型被创建实例时,对应的闭包或函数会被调用,而他们的返回值会被作为属性的默认值. ESC: Class SomeCLass{ let someProperty:SomeType={ //给someProperty赋一个默认值 //返回一个与

java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这

Python学习笔记-安装MySQLdb模块

模块下载地址: MySQL-python 1.2.3 for Windows and Python 2.7, 32bit and 64bit versions http://www.codegood.com/archives/129 直接点击安装exe即可,如果缺少dll文件,可以百度下载相关dll文件. Python学习笔记-安装MySQLdb模块

初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)

Swift使用自动引用计数(ARC)来管理应用程序的内存使用.这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理.当实例并不再被需要时,ARC会自动释放这些实例所使用的内存. 另外需要注意的: 引用计数仅仅作用于类实例上.结构和枚举是值类型,而非引用类型,所以不能被引用存储和传递. swift的ARC工作过程 每当创建一个类的实例,ARC分配一个内存块来存储这个实例的信息,包含了类型信息和实例的属性值信息. 另外当实例不再被使用时,ARC会释放实例所占用的内存,这些

Linux System Programming 学习笔记(六) 进程调度

1. 进程调度 the process scheduler is the component of a kernel that selects which process to run next. 进程调度器需要使 处理器使用率最大化,并且提供 使多个进程并发执行的虚拟 Deciding which processes run, when, and for how long is the process scheduler's fundamental responsibility. 时间片:th