爬虫 2 XPath 和 pyquery

XPath

1.常用规则

     表达式            描述        
  nodename     选取此节点的所有子节点
  /     从当前节点选取直接子节点
  //     从当前节点选取子孙节点
  .     选取当前节点
  ..     选取当前节点的父节点
  @     选取属性

 

 

 

 

 

2.etree

python 3.5以上没有了整合的库,通过from lxml import etree 调用,pycharm会报错,但是功能还是能够实现

etree.HTML()   对html文本进行初始化

etree.tostring() 输出修正后的代码 (bytes类型)

etree.parse(文本名,etree.HTMLparser()) 读取文本解析

3.xpath

//*     选取所有节点

//ul/li  选取子节点或者子孙节点

//li[@class="item"]   属性匹配

//a/@href        获取属性

当遇到classname有多个值,可以使用contain()方法

XPath提供了100多个函数,具体可以参考:

http://www.w3school.com.cn/xpath/xpath_functions.asp

pyquery

1.调用方法

from pyquery impoPyQuery

1)PyQuery(str)字符串初始化

2)PyQuery(url = ‘’)URL初始化

PyQuery(requests,get(url).text)功能相同

3) PyQuery(filename = ‘’)文件初始化

2.基本 css选择器

from pyquery import PyQuery as pq
doc = pq(html)
print(doc('#container .list li'))
类型为PyQuery类型
View Code

查询函数和jQuery的用法相同

find()   查询节点的所有子孙节点 可传入css选择器筛选符合条件的节点
children()    查询子节点 可传入css选择器筛选符合条件的节点
parent()      查询父节点 可传入css选择器筛选符合条件的节点
parents()    查询祖先节点 可传入css选择器筛选符合条件的节点
siblings()     查询兄弟节点 可传入css选择器筛选符合条件的节点
items()       得到一个生成器,实现遍历
.attr.属性     获取属性
text()         获取文本,改变节点内部的内容
addClass()   添加指定class属性
removeClass()  删除指定class属性
attr()         修改属性等
html()        改变节点内部的内容
remove()    移除指定节点
pyquery强大的一点是它能支持伪类选择器
标签名:first-child             第一个节点
标签名:last-child             最后一个节点
标签名:ntn-child(2)         第二个节点
标签名:gt(2)                  第三个节点之后的此标签节点
标签名:ntn-child(2n)       偶数位置的节点
标签名:contains(文本内容)    包含此文本内容的节点      
View Code

 

posted @ 2019-03-28 16:49  爱学习的红领巾  阅读(397)  评论(0编辑  收藏  举报