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类型

查询函数和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(文本内容) 包含此文本内容的节点

爬虫 2 XPath 和 pyquery的更多相关文章

  1. Python爬虫利器六之PyQuery的用法

    前言 你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有 ...

  2. 一起学爬虫——使用selenium和pyquery爬取京东商品列表

    layout: article title: 一起学爬虫--使用selenium和pyquery爬取京东商品列表 mathjax: true --- 今天一起学起使用selenium和pyquery爬 ...

  3. 爬虫常用Xpath和CSS3选择器对比

    爬虫常用Xpath和CSS3选择器对比 1. 简介 CSS是来配合HTML工作的,和Xpath对比起来,CSS选择器通常都比较短小,但是功能不够强大.CSS中的空白符' '和Xpath的'//'都表示 ...

  4. python爬虫:XPath语法和使用示例

    python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历. 选取节点 XPath使用路 ...

  5. Python爬虫之xpath语法及案例使用

    Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...

  6. 非常全的一份Python爬虫的Xpath博文

    非常全的一份Python爬虫的Xpath博文 Xpath 是 python 爬虫过程中非常重要的一个用来定位的一种语法. 一.开始使用 首先我们需要得到一个 HTML 源代码,用来模拟爬取网页中的源代 ...

  7. 爬虫神器xpath的用法(三)

    xpath的多线程爬虫 #encoding=utf-8 ''' pool = Pool(4) cpu的核数为4核 results = pool.map(爬取函数,网址列表) ''' from mult ...

  8. 爬虫神器XPath,程序员带你免费获取周星驰等明星热门电影

    本教程由"做全栈攻城狮"原创首发,本人大学生一枚平时还需要上课,但尽量每日更新文章教程.一方面把我所习得的知识分享出来,希望能对初学者有所帮助.另一方面总结自己所学,以备以后查看. ...

  9. 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 相关教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...

随机推荐

  1. 音频格式软件 GoldWave 支持V3

    版本:GoldWave v5.67 md5:36E78BE278908B6538CE24D41A6859BA sha1:36A00003562F071670588D29E573B2FB0D8FF40A ...

  2. C# 控制CH341进行SPI,I2C读写

    之前看了别人是C++ MFC开发的CH341 I2C,SPI读写flash的软件代码,看上去有点头晕,感觉还是使用C# winform开发更人性化些 C#控制需要调用CH341提供的DLL库,网上多数 ...

  3. MySQL 5.6 以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。

    Field 'id' doesn't have a default value问题解决方法 运维的名义关注0人评论3323人阅读2018-01-23 17:37:42   MySQL 5.0 以上版本 ...

  4. function "round" declared implicitly

    keil工程代码,浮点计算中引用了数学库 math.h 中的round函数,但编译时出现告警 “warning:  #223-D: function "round" declare ...

  5. [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool

    测试工具使用递归的方式获取子进程的Msg消息,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,循环5555555次+1(加锁 ...

  6. OPC客户端开发问题总结

    环境准备 采用MatrikonOPC做模拟服务器,注册 OPCDAAuto.dll组件 引用 Interop.OPCAutomation.dll组件.开始开发. 1..new OPCServer()- ...

  7. 2018.7.3 lnmp一键安装包无人值守版本 php7.2 + nginx1.14.0 + mariadb5.5 + centos7.1(1503) 环境搭建 + Thinkphp5.1.7 配置

    给自己练习用的,整个过程追求一个简单粗暴,没有配置虚拟主机,现在记录一下过程. 1. 进入到lnmp解压缩后的文件夹conf/rewrite,把thinkphp.conf复制一份到/usr/local ...

  8. php变量函数

    这个东西相当于C语言中的函数指针,C#里的委托   function come() {                   //定义com函数 echo "来了<p>" ...

  9. 刘志梅201771010115.《面向对象程序设计(java)》第十四周学习总结

    实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1)设计模式:反复使用.经过分类编目的.代码设计经验的总结. 在Alexander的模式分类和软件模式的分类 ...

  10. RestTemplate invoke JSON and convert to Object

    @Test public void webTest() throws JsonProcessingException { Map<String, String> a = new HashM ...