python爬虫Pyquery简介及简单使用
Pyquery简介及简单使用
介绍:
你好,我相信在你看到这篇文章的时候,你已经不是一个爬虫小白了,所以关于一些爬虫的基础知识诸如requests之类的我就不多叙述了,直接上干货。Pyquery是一个与BeautifulSoup类似的网页解析库,再说之前如果你是小白,不知道怎么安装的话我再
这里提供一种最常用的方式:在配置好pip的环境变量的情况下pip3 install Pyquery,回车即可。如果不知道环境变量怎么配置,那么大家可以自己百度一下,也不难,安装好之后我们就可以使用该库了。
Pyquery 与jquery?
如果你熟悉或者了解jQuery,那么使用这个库将会非常的方便,因为正如它的名称一样,它与jQuery有着千丝万缕的关系,说白了就是你可以使用web, css的选择器来解析选择我们所需要的网页内容。它与BeautifulSoup中提供的select()方法非常类似。
说在前面:
在演示之前呢,我想大家一般都会使用pycharm来编辑,在这里我推荐大家可以使用一个叫做jupyter的编辑器,
它也是十分方便的,你只需要在cmd里面pip3 install jupyter然后等待安装完成即可,提示:安装过程肯会很慢,在这里大家可以百度使用一些国内比如清华等的一些资源进行安装,这样会快很多。大家可以自行百度pip安装过慢,我想可以找到一些国内的地址的。在安装好之后,cmd运行jupyter notebook即可出现一个编辑器窗口。可以file新建一个python3文件,那么就和pycharm一样去编辑代码即可。方便快捷。
实例演示(建议实践):
初始化:
首先导入我们需要的包,和pycharm一样。提示:(tab键会有提示,但是通常要等一小会儿才会出来,
shift +enter键可以及时的查看运行结果哦)

静态初始化:
咱们测试的html片段,大家要从基础学起嘛

接着传入html,然后print一下,当然你也可以直接doc("li")shift +enter,也可以出现结果,具体大家自己选择,所以jupyter还是很方便的,它还可以制作网页PPT等一些功能,大家可以自己了解。
在这里我们传入html以后,就像jQuery一样选择li标签,之后大家可以看结果,所有符合条件的li都被选择出来了。

查看一下类型:

URL初始化:

文件初始化:

基本CSS选择器
id(#),class (.)子孙,直接后代,具体的话大家可以自己查找把。注意:class可以有多个哦比如<p class='class1 class2'></p>那么p标签就会对应着两个class了,大家要注意
1.这里查询class='item_0',对应输出的结果如下:

2.ul>li:直接后代选择器,也就是ul之下的所有直接后代li,输出结果如下:

查找元素
1.find()查找所有子元素


运行结果:

注意到都是pyquery.pyquery.PyQuery对象,那么我们还可以嵌套来进行查询,举个例子:

所以我们可以看到这个库还是非常方便的,也很灵活,在此查看type:

所以还可以在嵌套,具体期待大家实战
2.children()查找直接元素
大家注意与find()对比一般使用find()

查找父元素
1.parent()方法查找直接父元素:

2.parents()方法查找祖先父元素:



parents()还可以在传入一个参数,那么就会进行又一次的撒选,所以下面就只有一个了(wrap)

查找兄弟元素
注意'.list .item_0.active',list与.item_0.active中间有一个空格(css子孙选择器),.item_0.active中间没有空格,代表并列关系。运行结果:

siblings()兄弟元素

同样也可以进行再次选择,传入参数:

遍历
单个元素
直接输出即可
多个元素
使用items()方法,返回一个迭代器,使用for in遍历:

获取信息
获取属性


获取文本
text()方法:

获取html

DOM操作
addClass() 与removeclass(),增加与删除class与jquery DOM操作差不多


attr,css


总结
今天就将这么多,大家如果还想了解更多的话就自己去当一个百度工程师吧,如有错误,请指正,谢谢!