当前位置: 首页 > 编程笔记 >

python使用xpath中遇到:到底是什么?

姬英耀
2023-03-14
本文向大家介绍python使用xpath中遇到: 到底是什么?,包括了python使用xpath中遇到: 到底是什么?的使用技巧和注意事项,需要的朋友参考一下

前言

大家在学习python爬虫的过程中,会发现一个问题,语法我看完了,说的也很详细,我也认真看了,爬虫还是不会写,或者没有思路,所以我的所有文章都会从实例的角度来解析一些常见的问题和报错。下面话不多说了,来一起看看详细的介绍吧。

Element是什么

回归正题,大家晕头转脑的看完繁杂的语法之后,已经迫不及待写点什么东西了,然后部分同学可能遇到了这个

<Element a at 0x39a9a80>

或者类似 Element a at 0x???????,这样的一个值,然后大家带着问题去搜,然后全是英文啊,什么一大堆乱七八糟的啊,英文不好的同学就崩溃了,在这里,我会重点解析一下

某种意义上来说,当你打印变量的时候得到的这个值,其实它是一个列表,然后列表中的每一个值都是一个字典

如何使用理解请看半成品开车实例,证明了本人非常擅长把学习和乐趣结合起来并且切身解决日常需求,滑稽脸.jpg

from bs4 import BeautifulSoup
from lxml import etree
import requests
gjc='SHKD-700'
#定义URL
html = "http://www.btanv.com/search/"+gjc+"-hot-desc-1"
#解码URL
html = requests.get(html).content.decode('utf-8')
#解析成xml
dom_tree = etree.HTML(html)
#在xml中定位节点,返回的是一个列表
links = dom_tree.xpath("//a[@class='download']")
for index in range(len(links)):
 # links[index]返回的是一个字典
 if (index % 2) == 0:
  print(links[index].tag)
  print(links[index].attrib)
  print(links[index].text)

实例解析

下面重点看看这个代码,

  print(links[index])
  print(type(links[index]))
  print(links[index].tag)#获取<a>标签名a
  print(links[index].attrib)#获取<a>标签的属性href和class
  print(links[index].text)#获取<a>标签的文字部分

打印出来的是

<Element a at 0x3866a58>
<class 'lxml.etree._Element'>
a
{'href': 'magnet:?xt=urn:btih:7502edea0dfe9c2774f95118db3208a108fe10ca', 'class': 'download'}
磁力链接

该节点的html代码为

<a href="magnet:xt=urn:btih:7502edea0dfe9c2774f95118db3208a108fe10ca" rel="external nofollow" class="download">磁力链接</a>

看到这里大家应该就非常兽血沸腾的了解了三个属性的用法了。

总结

  • Element类型是'lxml.etree._Element',某种意义来说同时是一个列表
  • 列表的需要使用tag\attrib\text三个不同的属性来获取我们需要的东西
  • 变量.tag获取到的是标签名是---字符串
  • 变量.attrib获取到的是节点标签a的属性---字典
  • 变量.text获取到的是标签文本--字符串

欢迎收藏点赞,拒绝转载,因为目前我也是自学向前摸索,这些都是我目前认知到的东西,肯定有讲的不准确的地方,不希望会误导到他人

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 问题内容: 我不知道如何工作。 文档中有一些解释。例如,它们的意思是: 带有最终估算器的变换管线。 为了使我的问题更清楚,什么是?它们如何工作? 编辑 由于有了答案,我可以使我的问题更清楚: 当我调用管道并通过时,需要两个转换器和一个估计器,例如: 我叫这个怎么办? 我不知道估算器如何成为变压器以及如何装配变压器。 问题答案: *scikit-learn中的 *Transformer- 一些具有f

  • 问题内容: 我在python中有一个问题。 文档说这是一个类实例所属的类。因此,我进行了一系列实验: 一切顺利。 然后我输入如下代码: 从上面的代码中,我认为也许等于或,但是以下代码使我感到惊讶: 为什么更改了,但仍然保持在3?而且,当我改变时,变得。世界到底是什么? 问题答案: “从以上代码中,我认为NewCounter1.count等于NewCounter1。class.count” 问题是,

  • 问题内容: 我正在阅读有关该功能的信息。问题是我仍然无法理解其用法。据我所知的唯一的事情是相同调用。 我不明白这本书何时提到你如何在运行时不知道其名称的情况下如何使用它来获取对函数的引用。总的来说,也许这是我在编程方面的菜鸟。谁能给这个问题一些启发?我什么时候以及如何使用它? 问题答案: 完全等同于。 有只有两个原因使用它: 你无法编写,因为你事先不知道想要哪个属性(它来自字符串)。对于元编程非常

  • 主要内容:JSP的由来,Servlet与JSP异同点,JSP相对于Servlet的优点JSP(Java Server Pages)是一种动态网页开发技术。JSP 文件就是在传统的 HTML 文件中插入 Java 代码和 JSP 标签,后缀名为 。 JSP 与 PHP、ASP、ASP.NET 等语言类似,都运行在服务端。通常返回给客户端的就是一个 HTML 文件,因此只要有浏览器就能查看 JSP 页面。 JSP 使用 JSP 标签在 HTML 网页中插入 Java 代码,标签通常以

  • 直到我在旧存储库中随机检查 ,我才听说过这个文件,它就是一个我自己没有编辑过也从未见过的文件。我不知道它是如何到达那里的。 似乎很常见 - 主要是如何删除它(例如这里和这里)。 这个文件是什么,是什么创建了它?

  • 基本上,为什么有这个术语? 还有,接口是什么意思?