爬虫(九十四)PyQuery的使用方法

志学Python订阅号

爬虫(九十四)PyQuery的使用方法

2020-04-02

志学Python

志学Python

爬虫(九十四)PyQuery的使用方法_第1张图片

春季,四季之一。春,代表着温暖、生长。春季,阴阳之气开始转变,万物随阳气上升而萌牙生长,大地呈现春和景明之象。

爬虫(九十四)PyQuery的使用方法_第2张图片

pyQuery简介

如果你是一个前端开发人员,我相信你会熟悉jQuery.js的时代,那可是大大简化了直接操作DOM方式,十分方便,从官网我们可以知道pyQuery,就是类似于jQuery,或者说是jQuery的python版本的实现,所以说有了这个jQuery的基础,我感觉都可以抛弃BeautifulSoup了,BeautifulSoup语法太难搞了,所以以后就用pyQuery进行爬虫爬取页面吧

快速入门

其实你可以使用pyQueryclasspq去加载一个HTML,XML文档结构,也可以通过加载网站链接,或者一个文件等

from pyquery import PyQuery as pqfrom lxml import etreeimport urllibd = pq("")d = pq(etree.fromstring(""))d = pq(url=your_url)d = pq(url=your_url,opener=lambda url, **kw: urlopen(url).read())d = pq(filename=path_to_html_file)

初始化一段HTML

html = ''''''

爬虫(九十四)PyQuery的使用方法_第3张图片

打印DOM文档

from pyquery import PyQuery as jqdoc = jq(html)print(doc)

爬虫(九十四)PyQuery的使用方法_第4张图片

初始化URL

doc = jq(url='http://www.baidu.com')#程序会自动请求urlprint(doc('body'))#返回body标签

爬虫(九十四)PyQuery的使用方法_第5张图片

初始化文件

我们新建一个test.html文件,里面输入如下代码

        Document  

我们再新建一个文件test.py文件,代码如下

from pyquery import PyQuery as jqdoc = jq(filename="test.html")print(doc)

接下来运行test.py

爬虫(九十四)PyQuery的使用方法_第6张图片

CSS基础选择器

id选择器

html = ''''''from pyquery import PyQuery as pqjq = pq(html)print(jq('#item-wrap'))

爬虫(九十四)PyQuery的使用方法_第7张图片

class类名选择器

from pyquery import PyQuery as pqjq = pq(html)print(jq('.container'))

爬虫(九十四)PyQuery的使用方法_第8张图片

标签选择器

from pyquery import PyQuery as pqjq = pq(html)print(jq('div'))

爬虫(九十四)PyQuery的使用方法_第9张图片

父子选择器

from pyquery import PyQuery as pqjq = pq(html)print(jq('.container ul li'))

还有其他很多各种各样的选择,属性选择器,伪类选择器,等等,可以学习前端的HTML,CSS,JavaScript,以及jQuery,这个非常相似的,就不过多的讲述了

查找元素

查找所有li标签子元素

html = ''''''from pyquery import PyQuery as pqjq = pq(html)print(jq('#item-wrap li'))

爬虫(九十四)PyQuery的使用方法_第10张图片

查找li.active子元素

from pyquery import PyQuery as pqjq = pq(html)print(jq('#item-wrap li.active'))

查找li.activea子元素

from pyquery import PyQuery as pqjq = pq(html)doc = jq('#item-wrap li.active')a = doc.find('a')print(a)

也可以直接使用children()方法查找子元素

from pyquery import PyQuery as pqjq = pq(html)doc = jq('#item-wrap li.active')a = doc.children()print(a)

查找父级元素parent()

from pyquery import PyQuery as pqjq = pq(html)doc = jq('#item-wrap')parent = doc.parent()print(parent)

爬虫(九十四)PyQuery的使用方法_第11张图片

查找#item-wrap.item-first.active的兄弟元素

from pyquery import PyQuery as pqjq = pq(html)doc = jq('#item-wrap .item-first.active')siblings = doc.siblings()print(siblings)

遍历文档对象

from pyquery import PyQuery as pqjq = pq(html)lis = jq('li').items()#.items会是一个生成器print(type(lis))for li in lis:    print(li)

爬虫(九十四)PyQuery的使用方法_第12张图片

获取属性

获取a标签的href属性

from pyquery import PyQuery as pqjq = pq(html)a = jq('.item-first.active a')print(a)print(a.attr('href'))#定义a标签的href属性用于指定超链接目标的URL。如果用户选择了a标签中的内容,那么浏览器会尝试检索并显示href属性指定的URL所表示的文档,或者执行JavaScript表达式、方法和函数的列表。print(a.attr.href)

获取文本

获取a标签的文本

from pyquery import PyQuery as pqjq = pq(html)a = jq('.item-first.active a')print(a)print(a.text())

获取html

from pyquery import PyQuery as pqjq = pq(html)li = jq('.item-first.active')print(li)print(li.html())

pyQueryDOM操作

删除,增加active类型

from pyquery import PyQuery as pqjq = pq(html)li = jq('.item-zore.active')print(li)li.removeClass('active')#删除 active 类名print(li)li.addClass('active')#增加 active 类名print(li)

爬虫(九十四)PyQuery的使用方法_第13张图片

attr、css 属性,样式设置

from pyquery import PyQuery as pqjq = pq(html)li = jq('.item-zore.active')print(li)li.attr('name', 'link')#增加一个属性print(li)li.css('font-size', '14px')#增加一个cssprint(li)

移除DOM元素

from pyquery import PyQuery as pqjq = pq(html)wrap = jq('.container')print(wrap.text())wrap.find('#item-wrap').remove()#找到p标签然后删除print(wrap.text())print(wrap)

爬虫(九十四)PyQuery的使用方法_第14张图片

其他DOM方法

http://pyquery.readthedocs.io...

伪类选择器

from pyquery import PyQuery as pqjq = pq(html)li = jq('li:first-child')print(li)li = jq('li:last-child')print(li)li = jq('li:nth-child(2)')print(li)li = jq('li:gt(2)')print(li)li = jq('li:nth-child(2n)')print(li)li = jq('li:contains(second)')print(li)

爬虫(九十四)PyQuery的使用方法_第15张图片

更多CSS选择器可以查看

http://www.w3school.com.cn/cs...

官方文档

http://pyquery.readthedocs.io/

爬虫(九十四)PyQuery的使用方法_第16张图片

你可能感兴趣的:(python3.x,网页爬虫)