python网络爬虫——pyquery的使用(六)

本文介绍了PyQuery库的基本使用方法,包括初始化方式、节点查找、遍历、信息获取及节点操作等内容,并通过实例演示了如何利用PyQuery进行网页解析。

pyquery的使用

一、pyquery的介绍

使用pyquery需要在Web和了解jQuery的基础上,使用该CSS选择器。

二、pyquery的使用

1、初始化工作

使用pyquery初始化的方式有很多,传入的参数可以是字符串,也可以是URL和文件名,下面将一一介绍初始化方法。

字符串

html = '''
<html>

<head>
  <meta charset="utf-8">
  <title>test02.html</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
  <div id="container">
    <iframe id="iframe" sandbox="allow-scripts" src="/files/%E7%88%AC%E8%99%AB%E5%86%99%E4%BD%9C%E4%BB%A3%E7%A0%81%E6%B5%8B%E8%AF%95/test02.html"></iframe>
  </div>
</body>

</html>
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('title'))

【运行结果】

<title>test02.html</title>

URL

URL以优快云首页地址为例:

from pyquery import PyQuery as pq
doc = pq(url = 'https://www.youkuaiyun.com/')
print(doc('title'))

【运行结果】

<title>优快云 - 专业开发者社区</title> 

文件初始化

我们将以下字符串保存为一个HTML文件,通过文件的形式进行初始化。

【test02.html】

<bookstore>
  <book>
    <title lang="eng">Harry Potter</title>
    <price>29.99</price>
  </book>

  <book>
    <title lang="eng">Learning XML</title>
    <price>39.95</price>
  </book>
</bookstore>
from pyquery import PyQuery as pq
doc = pq(filename = 'test02.html')
print(doc('title'))

【运行结果】

<title lang="eng">Harry Potter</title>
    <title lang="eng">Learning XML</title>
2、查找节点

(1)查找子节点

查找子节点时需要用到find()方法,此时传入的参数是CSS选择器。

from pyquery import PyQuery as pq
doc = pq(filename = 'test02.html')
item = doc('book')
print(item)
lis1 = item.find('title')
lis2 = item.find('price')
print(lis1)
print(lis2)

【运行结果】

<book>
    <title lang="eng">Harry Potter</title>
    <price>29.99</price>
  </book>

  <book>
    <title lang="eng">Learning XML</title>
    <price>39.95</price>
  </book>

<title lang="eng">Harry Potter</title>
    <title lang="eng">Learning XML</title>
    
<price>29.99</price>
  <price>39.95</price>

可以看到,我们首先匹配的是book节点,然后匹配book节点下的子节点title和price。

其实使用find方法匹配的是所有的子孙节点,如果只是单纯匹配子节点可以使用children方法。

(2)匹配父节点

使用parent()方法,如果是要匹配祖先节点,则需要使用parents()方法。

(3)匹配兄弟节点

可以使用siblings()方法。

3、遍历

对于获取到的内容如果是单个节点,则可以直接转换为字符串类型,而对于获取到多个节点,因其类型为PyQuery类型,需要对获取到的数据进行遍历,这是需要调用items()方法。

from pyquery import PyQuery as pq
doc = pq(filename = 'test02.html')
items = doc('title').items()
print(items)
print(type(items))
for i in items:
    print(type(i))
    print(i)
    

【运行结果】

<generator object PyQuery.items at 0x000002B79E13EF48>
<class 'generator'>
<class 'pyquery.pyquery.PyQuery'>
<title lang="eng">Harry Potter</title>
    
<class 'pyquery.pyquery.PyQuery'>
<title lang="eng">Learning XML</title>
4、获取信息

(1)获取属性

使用attr()方法

from pyquery import PyQuery as pq
doc = pq(filename = 'test02.html')
items = doc('title')
for i in items.items():
    print(i.attr('lang'))   

【运行结果】

eng
eng

遍历获取到的数据,就能获得所有title节点的land属性值。

(2)获取文本

使用text()方法

from pyquery import PyQuery as pq
doc = pq(filename = 'test02.html')
items = doc('title')
for i in items.items():
    print(i.text())  

【运行结果】

Harry Potter
Learning XML

同样是遍历,获取到每一个title节点的文本值。

5、节点操作

(1)为某个节点添加或删除一个class

调用的方法为addClass和removeClass

from pyquery import PyQuery as pq
doc = pq(filename = 'test02.html')
items = doc('title')
for i in items.items():
    print(i)
    i.addClass('book01')
    print(i)
    i.removeClass('book01')
    print(i)

【运行结果】

<title lang="eng">Harry Potter</title>
    
<title lang="eng" class="book01">Harry Potter</title>
    
<title lang="eng" class="">Harry Potter</title>
    
<title lang="eng">Learning XML</title>
    
<title lang="eng" class="book01">Learning XML</title>
    
<title lang="eng" class="">Learning XML</title>

可以看到,首先是打印最初始的title节点,加上class属性后再次打印,去掉class属性后再次打印。

(2)attr、text、html

attr:用来改变属性值;

text:用来改变文本值;

html:用来改变节点值;

(3)remove

移除不需要的节点值,将整个节点移除。

6、伪类选择器

支持多种伪类选择器,例如选择第一个节点、最后一个节点、奇数节点、偶数节点、以及包含指定文本的节点等。

### 回答1: 使用pyquery可以通过CSS选择器或XPath表达式来查找HTML文档中的元素,从而提取所需的数据。具体步骤如下: 1. 导入pyquery库:`from pyquery import PyQuery as pq` 2. 加载HTML文档:`doc = pq(html)` 3. 使用CSS选择器或XPath表达式查找元素:`doc('selector')`或`doc.xpath('xpath_expression')` 4. 提取元素的文本内容、属性值等数据:`element.text()`或`element.attr('attribute_name')` 例如,假设我们要从以下HTML文档中提取所有链接的URL地址: ```html <html> <body> <a href="https://www.baidu.com">百度</a> <a href="https://www.google.com">谷歌</a> <a href="https://www.bing.com">必应</a> </body> </html> ``` 可以使用以下代码实现: ```python from pyquery import PyQuery as pq html = ''' <html> <body> <a href="https://www.baidu.com">百度</a> <a href="https://www.google.com">谷歌</a> <a href="https://www.bing.com">必应</a> </body> </html> ''' doc = pq(html) links = doc('a') # 使用CSS选择器查找所有<a>元素 for link in links: url = pq(link).attr('href') # 提取<a>元素的href属性值 print(url) ``` 输出结果为: ``` https://www.baidu.com https://www.google.com https://www.bing.com ``` ### 回答2: Python爬虫是目前互联网上非常常见的一种数据采集方式,通过Python程序代码模拟人类浏览器行为,从目标网站上自动抓取所需数据。爬虫数据提取方式有很多种,其中比较流行的一种方式就是使用pyquery查找元素。 pyqueryPython的一种强大的解析html和xml文档的库,它采用了jQuery风格的语法,对于提取数据非常方便快捷。下面我们来介绍pyquery的用法。 1. 安装pyquery库:使用pip命令可以很方便地安装pyquery库,如下所示: ``` pip install pyquery ``` 2. 导入pyquery库:在Python程序代码中导入pyquery库,如下所示: ``` from pyquery import PyQuery as pq ``` 3. 初始化pyquery对象:通过url或html文本初始化pyquery对象,如下所示: 通过url初始化: ``` doc = pq(url='http://www.baidu.com') ``` 通过html文本初始化: ``` html = ''' <html> <head> <title>python爬虫数据提取方式——使用pyquery查找元素</title> </head> <body> <div class="content" id="content-div"> <p>这是一个示例文本</p> </div> </body> </html> ''' doc = pq(html) ``` 4. 查找元素:使用find、children、siblings等方法查找元素,如下所示: 查找元素: ``` p = doc('p') ``` 查找元素属性值: ``` div_id = doc('#content-div').attr('id') ``` 5. 获取元素内容:使用text、html方法获取元素内容,如下所示: 获取文本内容: ``` p_text = p.text() ``` 获取html内容: ``` div_html = doc('#content-div').html() ``` 总之,pyqueryPython爬虫数据提取中很实用的一种工具,通过它可以快速方便地获取到所需数据。在使用pyquery时,需要了解基础的HTML语法,并掌握pyquery中的各种查找、遍历和属性操作方法。 ### 回答3: Python爬虫数据提取方式之一是使用pyquery查找元素。Pyquery是一个Python库,它是在jQuery的基础上构建的,可以用来解析和操作HTML文档。使用Pyquery可以方便快捷地从网页中提取需要的数据。 使用Pyquery查找元素的过程分为以下几步: 第一步是获取网页源代码。通常情况下,可以使用Python Requests库获取网页源代码,并将其保存为一个字符串类型的变量。 第二步是使用Pyquery构建doc对象。使用Pyquery的from_string()方法可以将网页源代码转换为Pyquery类型的对象。 第三步是通过选择器选取元素。类似于使用jQuery选择器选取元素一样,使用Pyquery的find()方法和eq()方法可以选取需要的元素。 第四步是获取元素的属性或文本值。使用Pyquery的attr()方法可以获取元素的属性值,text()方法可以获取元素的文本值。 最后是对获取的数据进行处理和存储。可以使用Python的各种数据处理和存储工具对获取的数据进行处理和存储,例如使用Pandas库进行数据分析和处理,使用MySQL或MongoDB等数据库进行数据存储。 总之,使用Pyquery查找元素是Python爬虫重要的数据提取方式之一,通过选取网页中需要的元素,并获取其属性或文本值,可以快速而准确地抓取数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值