python 解析库pyquery,parsel的学习

解析库PyQuery的学习

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!
目标网站:https://movie.douban.com/top250

引言
为了提升自己有关于爬虫的深度,特开始全面的提升自己,与平时大多时间使用lxml的xpath提取不同本次使用的为pyquery解析库

  1. pyquery的安装方法
    在命令行模式中输入或者在pycharm编辑器的terminal中输入
    1.1、pip install pyquery

  2. pyquery的初始化
    PyQuery的初始化的时候也需要传入HTML数据源来初始化一个操作对象,且PyQuery它的初始化方式有多种,比如直接传入字符串,传入URL,传文件名等。
    html/字符串初始化:一般html页面与字符串的初始化只在于filename方法的运用使用filename方法的时候就时html页面,直接使用字符串名则不需要使用该方法

在这里插入图片描述

html = '''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <base href='https://blog.csdn.net/Lucky_XiaoBai_?spm=1001.2014.3001.5343'>
    <title>xxx的博客</title>
</head>
<body>
<div id='images'>
    <a href='/Lucky_XiaoBai_/article/details/106576428'> 博客1 <br/><img src='image1.jpg'/></a>
    <a href='/Lucky_XiaoBai_/article/details/106576428'> 博客2 <br/><img src='image2.jpg'/></a>
    <a href='/Lucky_XiaoBai_/article/details/106544168'> 博客3 <br/><img src='image3.jpg'/></a>
    <a href='/Lucky_XiaoBai_/article/details/106532662'> 博客4 <br/><img src='image4.jpg'/></a>
</div>
</body>
</html>
'''
from pyquery import PyQuery as pq
response = pq(html)
print(response('a'))
print('*'*100)
print(response('a').text())



response = pq(filename='711_3.html')
print(response('a'))
print('*'*100)
print(response('a').text())

![](https://img-blog.csdnimg.cn/fee5449d7c5d4b9897209852f96ef606.png

url初始化

from pyquery import PyQuery as pq

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
}

response = pq('https://movie.douban.com/top250',headers=headers)
print(response.text())
print(response)

在111这里插入图片描述
在这里插入图片描述
如上两图使用了PyQuery初始化豆瓣的url请求获取到了数据,response响应的数据为豆瓣接口的html返回(打印的数据随着数据的状态显示的也截然不同)

mod = response('title').text()
print(mod)

在这里插入图片描述
下面来说说将要使用的PyQuery的选择器

选择器例子
# id#id='XXX’的选择器:选择所有id="XXX"的元素
.class.class='XXX’的选择器:选择所有class="XXX"的元素
*所有元素
elementp/div/ul/li的选择器:选择所有标签p/div/ul/li的元素
element element例div p:选择所有div标签下的p元素
items()获取到多个标签时,使用items()将pyquery转换为一个生成器
text()获取标签
attr获取属性

例子获取这些值
在这里插入图片描述

name = response('.hd a span:nth-of-type(1)').text()
print(name)

代码的意识:获取所有class=‘hd’下a标签下的第一个span的值其中nth-of-type(1)是指指获取第一个span的标签,如过是span标签下的则值为(下下图)获取所有span标签的值
下图是结果
在这里插入图片描述
在这里插入图片描述
3.获取信息获取信息有两种
3.1、是获取文本
如下图

	name = response('.hd a span:nth-of-type(1)').text()
	en_name = response('.hd a span:nth-of-type(2)').text()
	other = response('.hd a span:nth-of-type(3)').text()
	note = response('.inq').text()
	print(name)
	print(en_name)
	print(other)
	print(note)
	

在这里插入图片描述

name = ''.join(response('.hd a span:nth-of-type(1)').text()).split()
note = ''.join(response('.inq').text()).split()
print(name)
print(note)
for item in range(len(name)):
    print(name[item],note[item])

在这里插入图片描述
2、获取属性
在这里插入图片描述

#获取所有的a标签下的href链接
name = response('.hd a span:nth-of-type(1)').text().split()
note = response('.inq').text().split()
name_list = response('.hd a').items()
href = [i.attr('href') for i in name_list]
print(name)
print(note)
print(href)
for item in range(len(name)):
    print(name[item],note[item],href[item])

在这里插入图片描述

更多CSS选择器可以查看
http://www.w3school.com.cn/css/index.asp
官方文档
http://pyquery.readthedocs.io/

4.总结:
本次的学习就到这了,还有很多的选择器没有分析但对于目前大多数的网站入门应是够了,在使用pyquery的过程中还是比较轻松的,对于所需要的数据只要打开浏览器的开发者模式后,都可以较快的确认并获取自己所需要的数据,其局限性只限于静态页面的数据获取,但着丝毫不影响其强大,可以使人较快快速的上手去解析数据,所有python爬虫的初学者都可以多多的去使用,这对复杂结构的数据解析很有帮助。

更多CSS选择器可以查看
http://www.w3school.com.cn/css/index.asp
官方文档
http://pyquery.readthedocs.io/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值