python爬虫基础-xpath的使用(简单好用)

python之XPATH 数据准备工作有待后续更新url =#发送请求#读取html页面内容(请求得到的requestse.content.decode())#将html页面的内容转换成为xml文档对象#定位到包含条数数据所有内容的元素#对定位到包含所有元素的列表进行遍历,得到包含单条数据的元素#提供单条数据中的详细内容print(”电影的名称:",title[0],'评分:',score[0],评价人数:",number[0]) 阅读详情

使用前先安装包 lxml

开始使用

和beautifulsoup类似,首先我们需要得到一个文档树

把文本转换成一个文档树对象
from lxml import etree
if __name__ == '__main__':
    doc='''
        <div>
            <ul>
                 <li class="item-0"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
             </ul>
         </div>
        '''

    html = etree.HTML(doc)
    result = etree.tostring(html)
    print(str(result,'utf-8'))
    # 会打印出文档内容
把文件转换成一个文档树对象
from lxml import etree

# 读取外部文件 index.html
html = etree.parse('./index.html')
result = etree.tostring(html, pretty_print=True)    #pretty_print=True 会格式化输出
print(result)
# 均会打印出文档内容

节点、元素、属性、内容

xpath 的思想是通过 路径表达 去寻找节点。节点包括元素,属性,和内容

元素举例
html ---> <html> ...</html>
div ---> <div> ...</div>
a  ---> <a> ...</a>

这里我们可以看到,这里的元素和html中的标签一个意思。单独的元素是无法表达一个路径的,所以单独的元素不能独立使用

路径表达式
  /   根节点,节点分隔符,
    //  任意位置
    .   当前节点
    ..  父级节点
    @   属性
通配符
    *   任意元素
    @*  任意属性
    node()  任意子节点(元素,属性,内容)
谓语

使用中括号来限定元素,称为谓语

    //a[n] n为大于零的整数,代表子元素排在第n个位置的<a>元素
    //a[last()]   last()  代表子元素排在最后个位置的<a>元素
    //a[last()-]  和上面同理,代表倒数第二个
    //a[position()<3] 位置序号小于3,也就是前两个,这里我们可以看出xpath中的序列是从1开始
    //a[@href]    拥有href的<a>元素
    //a[@href='www.baidu.com']    href属性值为'www.baidu.com'的<a>元素
    //book[@price>2]   price值大于2的<book>元素
多个路径

用| 连接两个表达式,可以进行 或匹配

//book/title | //book/price  

函数

xpath内置很多函数。更多函数查看https://www.w3school.com.cn/xpath/xpath_functions.asp

  1. contains(string1,string2)
  2. starts-with(string1,string2)
  3. ends-with(string1,string2) #不支持
  4. upper-case(string) #不支持
  5. text()
  6. last()
  7. position()
  8. node()

可以看到last()也是个函数,在前面我们在谓语中已经提到过了

案例

定位元素

匹配多个元素,返回列表

from lxml import etree

if __name__ == '__main__':
    doc='''
        <div>
            <ul>
                 <li class="item-0"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
             </ul>
         </div>
        '''

    html = etree.HTML(doc)
    print(html.xpath("//li"))
    print(html.xpath("//p")) 

【结果为】

[<Element li at 0x2b41b749848>, <Element li at 0x2b41b749808>, <Element li at 0x2b41b749908>, <Element li at 0x2b41b749948>, <Element li at 0x2b41b749988>]
[]  #没找到p元素
html = etree.HTML(doc)
print(etree.tostring(html.xpath("//li[@class='item-inactive']")[0]))
print(html.xpath("//li[@class='item-inactive']")[0].text)
print(html.xpath("//li[@class='item-inactive']/a")[0].text)
print(html.xpath("//li[@class='item-inactive']/a/text()"))
print(html.xpath("//li[@class='item-inactive']/.."))
print(html.xpath("//li[@class='item-inactive']/../li[@class='item-0']"))

【结果为】

b'<li class="item-inactive"><a href="link3.html">third item</a></li>\n                 '
None    #因为第三个li下面没有直接text,None
third item  # 
['third item']
[<Element ul at 0x19cd8c4c848>]
[<Element li at 0x15ea3c5b848>, <Element li at 0x15ea3c5b6c8>]

使用函数

contains

有的时候,class作为选择条件的时候不合适@class=‘…’ 这个是完全匹配,当网页样式发生变化时,class或许会增加或减少像active的class。用contains就能很方便

from lxml import etree
if __name__ == '__main__':
    doc='''
        <div>
            <ul>
                 <p class="item-0 active"><a href="link1.html">first item</a></p>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
             </ul>
         </div>
        '''

    html = etree.HTML(doc)
    print(html.xpath("//*[contains(@class,'item')]"))

【结果为】

[<Element p at 0x23f4a9d12c8>, <Element li at 0x23f4a9d13c8>, <Element li at 0x23f4a9d1408>, <Element li at 0x23f4a9d1448>, <Element li at 0x23f4a9d1488>]
starts-with

from lxml import etree
if __name__ == '__main__':
    doc='''
        <div>
            <ul class='ul items'>
                 <p class="item-0 active"><a href="link1.html">first item</a></p>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
             </ul>
         </div>
        '''

    html = etree.HTML(doc)
    print(html.xpath("//*[contains(@class,'item')]"))
    print(html.xpath("//*[starts-with(@class,'ul')]"))

【结果为】

[<Element ul at 0x23384e51148>, <Element p at 0x23384e51248>, <Element li at 0x23384e51288>, <Element li at 0x23384e512c8>, <Element li at 0x23384e51308>, <Element li at 0x23384e51388>]
[<Element ul at 0x23384e51148>]
ends-with
print(html.xpath("//*[ends-with(@class,'ul')]"))

【结果为】

Traceback (most recent call last):
  File "F:/OneDrive/pprojects/shoes-show-spider/test/xp5_test.py", line 18, in <module>
    print(html.xpath("//*[ends-with(@class,'ul')]"))
  File "src\lxml\etree.pyx", line 1582, in lxml.etree._Element.xpath
  File "src\lxml\xpath.pxi", line 305, in lxml.etree.XPathElementEvaluator.__call__
  File "src\lxml\xpath.pxi", line 225, in lxml.etree._XPathEvaluatorBase._handle_result
lxml.etree.XPathEvalError: Unregistered function

看来python的lxml并不支持有的xpath函数列表

upper-case

和ends-with函数一样,也不支持。同样报错lxml.etree.XPathEvalError: Unregistered function

print(html.xpath("//a[contains(upper-case(@class),'ITEM-INACTIVE')]"))
text、last
#最后一个li被限定了
print(html.xpath("//li[last()]/a/text()"))

#会得到所有的`<a>`元素的内容,因为每个<a>标签都是各自父元素的最后一个元素。
#本来每个li就只有一个<a>子元素,所以都是最后一个
print(html.xpath("//li/a[last()]/text()"))  

print(html.xpath("//li/a[contains(text(),'third')]"))

【结果为】

['fifth item']
['second item', 'third item', 'fourth item', 'fifth item']
[<Element a at 0x26ab7bd1308>]
position
print(html.xpath("//li[position()=2]/a/text()"))
#结果为['third item']

上面这个例子我们之前以及讲解过了
*这里有个疑问,就是position()函数能不能像text()那样用呢

print(html.xpath("//li[last()]/a/position()"))
#结果  lxml.etree.XPathEvalError: Unregistered function

这里我们得到一个结论,函数不是随意放在哪里都能得到自己想要的结果

node

返回所有子节点,不管这个子节点是什么类型(熟悉,元素,内容)

print(html.xpath("//ul/li[@class='item-inactive']/node()"))
print(html.xpath("//ul/node()"))

【结果为】

[<Element a at 0x239a0d197c8>]
['\n                 ', <Element li at 0x239a0d19788>, '\n                 ', <Element li at 0x239a0d19888>, '\n                 ', <Element li at 0x239a0d19908>, '\n                 ', <Element li at 0x239a0d19948>, '\n                 ', <Element li at 0x239a0d198c8>, ' 闭合标签\n             ']
获取内容

刚刚已经提到过,可以使用.text和text()的方式来获取元素的内容

from lxml import etree
if __name__ == '__main__':
    doc='''
        <div>
            <ul class='ul items'>
                 <li class="item-0 active"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
             </ul>
         </div>
        '''
    html = etree.XML(doc)
    print(html.xpath("//a/text()"))
    print(html.xpath("//a")[0].text)
    print(html.xpath("//ul")[0].text)
    print(len(html.xpath("//ul")[0].text))
    print(html.xpath("//ul/text()"))

【结果为】

['first item', 'second item', 'third item', 'fourth item', 'fifth item']
first item

                 
18
['\n                 ', '\n                 ', '\n                 ', '\n                 ', '\n                 ', ' 闭合标签\n             ']

看到这里,我们观察到text()和.text的区别。自己总结吧。不太好表达,就不表达了

获取属性
print(html.xpath("//a/@href"))
print(html.xpath("//li/@class"))

【结果为】

['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']
['item-0 active', 'item-1', 'item-inactive', 'item-1', 'item-0']
自定义函数

我们从使用函数的过程中得到结论,就是有的函数不支持,有的支持,那问题来了,到底哪些函数支持呢。我们在lxml官网找到了答案。https://lxml.de/xpathxslt.html。lxml 支持XPath 1.0 ,想使用其他扩展,使用libxml2,和libxslt的标准兼容的方式。XPath 1.0官方文档 以及其他版本的XPath文档 https://www.w3.org/TR/xpath/

lxml supports XPath 1.0, XSLT 1.0 and the EXSLT extensions through libxml2 and libxslt in a standards compliant way.  

除此之外,lxml还提供了自定义函数的方式来扩展xpath的支持度 https://lxml.de/extensions.html

from lxml import etree

#定义函数
def ends_with(context,s1,s2):
    return s1[0].endswith(s2)
if __name__ == '__main__':
    doc='''
        <div>
            <ul class='ul items'>
                 <li class="item-0 active"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
             </ul>
         </div>
        '''
    html = etree.XML(doc)
    ns = etree.FunctionNamespace(None)  
    ns['ends-with'] = ends_with #将ends_with方法注册到方法命名空间中
    print(html.xpath("//li[ends-with(@class,'active')]"))
    print(html.xpath("//li[ends-with(@class,'active')]/a/text()"))

【结果为】

[<Element li at 0x2816ed30548>, <Element li at 0x2816ed30508>]
['first item', 'third item']

形参s1会传入xpath中的第一个参数@class,但这里注意@class是个列表
形参s2会传入xpath中的第二个参数’active’,'active’是个字符串
官网例子https://lxml.de/extensions.html

def hello(context, a):
    return "Hello %s" % a

from lxml import etree
ns = etree.FunctionNamespace(None)
ns['hello'] = hello
root = etree.XML('<a><b>Haegar</b></a>')
print(root.xpath("hello('Dr. Falken')"))
# 结果为 Hello Dr. Falken
xpath1.0支持的函数列表

number last() 谓语中返回在兄弟元素中排在最末尾的
number position() 谓语中,返回该元素在兄弟中的排名
number count(node-set) 返回子节点的个数 ,node-set代表子节点的表达式

//*[count(@*)=1]    属性只有一个的元素(因为元素的属性本身就是子节点)
//*[count(*)=1]    任意一种属性如果为1,就满足
//*[count(a)=1] 子元素中有一个`<a>`的元素
  1. node-set id(“foo”) 返回唯一id为foo的元素 。尝试了多次,未尝试出来,这里的唯一id是基于xml的,有下面这样一句话。所以确实没测试出来
If a document does not have a DTD, then no element in the document will have a unique ID.
  1. string local-name(node-set?)
  2. string name(node-set?)
  3. string namespace-uri(node-set?)
  4. string concat(string, string, string*)
  5. boolean starts-with(string, string)
  6. boolean contains(string, string)
  7. string substring-before(string, string)
  8. string substring-after(string, string)
  9. string substring(string, number, number?)
  10. number string-length(string?)
  11. string normalize-space(string?)
  12. number sum(node-set)
  13. number floor(number)
  14. number ceiling(number)
  15. number round(number)
花了半天时间整理了xpath最详细的全面教程!拿去用吧 使用时先安装 lxml 包 开始使用 和beautifulsoup类似,首先我们需要得到一个文档树 把文本转换成一个文档树对象 from lxml import etree if __name__ == '__main__': doc=''' <div> <ul> <li class="item-0"><a href="link1.html">first item< 阅读详情

相关推荐

[Python]实战——百度贴吧爬虫

网络爬虫(Web Spiders)是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。半年前,我接触了Lucene搜索引擎开发——开始了网络爬虫之旅;当时,采用的是纯Java开发环境,对百度某吧几百万帖子进行了全面爬取。那时候我对Python一点都不了解,今天对《Pyhon基础教程:第2版·修订版》以及极客学院相关视频进行了学习,形成了本文。 Key Words: 网络爬虫, 多线程, requests, XPath, lxml

机器学习 3186

Python使用XPath解析HTML的方法详解

XPath是一种用于选择XML文档中节点的语言,它可以通过路径表达式来定位节点。由于HTML文档的结构与XML文档类似,XPath也可以用于解析HTML文档。Python是一种非常流行的编程语言,它提供了许多库用于解析HTML文档。本文将介绍Python中使用XPath解析HTML文档的方法和技巧。Python学习福利。

weixin_45841831的博客 2789

python进阶-01-利用Xpath来解析Html

python Xpath用于在XML或HTML文档中查找节点(元素、属性等)并且用Xpath来获取我们需要的元素信息;

Lookontime的博客 1283

python使用xpath解析html

python使用xpath解析html

zhk 1526

【视频讲解】Python量子计算聚类Q-means:量子k-means算法分析电路数据实现可视化...

全文链接:https://tecdat.cn/?p=37821分析师:Yifan Zhang量子计算在近期已然成为一个频繁出现的热门概念。尽管它在大众认知以及互联网社区中备受瞩目,热度极高,然而就其实际能力而言,当前仍然存在诸多局限(点击文末“阅读原文”获取完整代码数据)。量子计算作为一个全新的领域,带来了相较于传统经典计算模式的重大范式转变。在量子计算的体系中,传统的 0 或 1 的经典比特被一...

拓端研究室TRL 1456

三维点云孔洞修复(附Python代码和公共点云数据集链接)

(1)物体自身缺失(2)物体自身形状复杂,很多凹凸面不够规则甚至存在空腔,空腔内部无法被三维激光扫描仪扫描到(3)物体部分区域对激光扫描不敏感,未被扫描上(4)扫描仪的扫描稳定性。

yanghl1215的博客 6953

Python爬虫中的xpath的简单用法(小例子)

Python爬虫中的xpath的简单用法(小例子) 简介 首先,XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。 这次使...

weixin_41588525的博客 1262

Appsflyer Web2App实战指南:OneLink与Web SDK深度对比

本文深入对比了Appsflyer实现Web2App的两大核心工具:OneLink智能链接与Web SDK。OneLink提供开箱即用的智能跳转,部署快捷,适合快速推广;Web SDK则支持高度自定义的用户行为追踪,适合深度分析与精细化运营。文章提供了详细的配置指南、场景化选型建议及实战避坑技巧,帮助营销与开发团队根据自身需求选择最佳方案,有效提升从网页到应用的转化率与归因精度。

weixin_29213655的博客 458

python爬虫——提取抓取内容(5)XPath的简单使用

一.XML基本概念 1.XML是什么? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C 的推荐标准 2.XML 与 HTML 的主要差异 XML 不是 HTML 的替代。 ...

weixin_44321116的博客 3877

【C#程序员入门AI】AI应用的操作系统:Semantic Kernel 2026实战

用户ID用户信息

人工智能AI技术 1249

PyTorch实战(12)——图神经网络(Graph Neural Network,GNN)

在本节中,我们首先简要概述了图神经网络 (Graph Neural Network, GNN) 的核心概念与应用,GNN 通过构建计算图分层聚合节点特征,解决了传统神经网络处理图数据时的四大局限:信息深度不足、节点顺序敏感、动态扩展困难和特征稀疏性问题。了解了不同类型的图学习任务(包括节点级、边级和图级三大类)。接着我们研究了几种流行的 GNN 模型,包括:GCN (通过权重共享实现图卷积)、GAT (引入注意力机制区分邻居重要性)和 GraphSAGE (采用随机采样应对大规模图)。

盼小辉丶的博客 3666

python中xpath中加随机数_Python爬虫中XPath的简单使用,之,Xpath

1.简介:Xpath是XML Path Language (XML路径语言)的缩写,是一门适用于XML脚本查找信息的语言,该语言同样也适用于在HTML中查找信息。2.安装pip install lxml3.常用语法:表达式简介nodename选取此节点的所有子节点/从当前节点直接选取子节点//从当前节点选取子孙节点.选取当前节点. .从当前节点选取父节点@选取属性4.Xpath的常用表达式://n...

weixin_39768762的博客 274

UMI——斯坦福刷盘机器人:通过手持夹爪革新数据收集方式,且使用视觉SLAM和Diffusion Policy预测动作

没想到今年年初的斯坦福mobilealoha的热度刚过,而到今年2月的下旬,斯坦福另一个团队又推出了UMI刷盘机器人,且这两个团队还互相认识、还在一块共同切磋(顺带小小感叹一下,斯坦福的氛围是真好而且真高产)斯坦福UMI刷盘机器人其与mobile aloha(以及AirExo: Low-Cost Exoskeletons for Learning Whole-Arm Manipulation in the Wild)最大的不同在于其收集数据处理的非真实的机器人,而是一个手持夹持器(从而大幅降低成本)

u013250861的博客 1357

Python 爬虫之Xpath的简单使用

1. 简介: Xpath是XML Path Language (XML路径语言)的缩写,是一门适用于XML脚本查找信息的语言,该语言同样也适用于在HTML中查找信息。 2. 常用语法: 表达式 简介 nodename 选取此节点的所有子节点 / 从当前节点直接选取子节点 // 从当前节点选取子孙节点 . 选取当前节点 . . 从当前节点选取父节点 @ 选取属性 3. Xpath的常用表达式: //name[@attr=‘string’] 表示选择所有名称为name,属

qq_50007511的博客 864

46、聚类算法在智能交通数据分析中的应用

本文探讨了聚类算法在智能交通数据分析中的应用,介绍了K-均值算法、K-中心点算法和基于模型的聚类算法的基本原理及特点,并结合实际交通数据讨论了其应用场景与挑战。通过聚类分析,能够从海量交通数据中发现隐藏模式,为交通管理和规划提供科学依据。文章还展示了具体的案例分析和实现流程,为未来智能交通系统的发展提供了参考。

zz67890的博客 133

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 532

【Python 爬虫】XPath的简单使用

一、XPath(XML Path Language) 是一门在XML文档中查找信息的语言,可用来在XML文档中对元素和属性进行遍历,需要安装lxml库 最常用的路径表达式 常用路径表达式以及表达式的结果 谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中 选取未知节点 选取若干路径,通过在路径表达式中使用“|”运算符,您可以选取若干个路径 XPath的运算符 二、对于xpath的简单理解 浅析~DOM结构中的元素节点、属性节点、文本节点 上篇博客是我当

风一样的少年 999

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python爬虫——用xpath做一个简单爬虫

Python爬虫——用xpath做一个简单爬虫 1.效果图 . 2.网页传送门. 3.进入网页后按F12打开开发者工具,用鼠标样的按钮定位到指定位置 4.上图中有所有我们要的数据,标题(大气震撼党政党建图文片头AE模板)和视频链接( //video-qn.ibaotu.com/18/06/49/508888piCHsa.mp4_10s.mp4) ,就开始写代码了,首先先导入包 import re...

心之所向的博客 1292

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

XPath:网络爬虫中的数据提取利器

XPath (XML Path Language) ,可以帮助我们精确定位和提取需要的数据。XPath是网络爬虫中不可或缺的工具,掌握其使用可以大大提高数据提取的效率和准确性。

single_ffish的博客 1732

python实现网络爬虫代码_技术干货—Python实现网络爬虫

网络爬虫又名“网络蜘蛛”,是通过网页的链接地址来寻找网页,从网站某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到按照某种策略把互联网上所有的网页都抓取完为止的技术。图片来源于网络下面是使用Python实现网络爬虫的一些基础知识。一、URLURL –URL的格式由三部分组成:第一部分是协议(或称为服务方式)。第二部分是存有该资源的...

weixin_39819327的博客 1158

python爬虫的简单复习1【使用etree进行XPath解析】

使用etree进行XPath解析

m0_58086930的博客 3492

20行代码简单python爬虫,爬虫实例

小说看不过瘾,下载下来慢慢看,python爬虫五分钟轻松搞定

hzz0504的博客 8781

python 爬取数据还要下载scrapy吗_python网络爬虫之Scrapy

本文分享的大体框架包含以下三部分(1)首先介绍html网页,用来解析html网页的工具xpath(2)介绍python中能够进行网络爬虫的库(requests,lxml,scrapy等)(3)从四个案例出发有易到难依次介绍scrapy集成爬虫框架下面开始对三部分内容逐一开始介绍。一、html和xpath说明1. html超文本标记语言,是用来描述网页的一种语言。主要用于控制数据的显示和外观。HTM...

weixin_42508185的博客 467

简单Python爬虫案例,带你掌握xpath数据解析方法

文章目录 xpath基本概念 xpath解析原理 环境安装 如何实例化一个etree对象: xpath(‘xpath表达式’) xpath爬取58二手房实例 爬取网址 完整代码 效果图 xpath图片解析下载实例 爬取网址 完整代码 效果图 xpath爬取全国城市名称实例 爬取网址 完整代码 效果图 xpath爬取简历模板实例

qq_44551298的博客 1770

使用xpath提取极客学院python课程内容名称

最近在熟悉python的时候偶然想试一试写一个简单的单线程爬虫,于是知道了有XPATH这个神器,它的主要用法如下: 1.//定位根节点 2./往下层寻找 3.提取文本内容:/text() 4.提取属性内容:/@xxxx 在使用的过程中写了一个提取极客学院python课程名的简单爬虫,代码不到20行,给想学习python以及网络爬虫技术的朋友一个参考: #!/usr/bin/env

宋梦科的专栏 726
上一篇: python爬虫基础-CSS选择器(简单好学)
下一篇: python爬虫-基本原理(简单好学)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值