博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
讲讲python使用xpath中遇到[<Element a at 0x39a9a80>到底是什么
阅读量:6489 次
发布时间:2019-06-24

本文共 1586 字,大约阅读时间需要 5 分钟。

写在前面

本人的所有文章只适合善于使用百度的人,因为所有基础知识个个博客复制粘贴了无数遍,我这里均不会详细讲述。

在这里我表示所有不经验证的转载都是耍流氓,把一篇篇错误的文章转载的到处都是,不知道浪费了多少人的时间精力去反复调试错误的代码,尤其是对初学者有极大的打击性。

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


Element是什么

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

<Element a at 0x39a9a80>

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

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

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

from bs4 import BeautifulSoupfrom lxml import etreeimport requestsgjc='SHKD-700'#定义URLhtml = "http://www.btanv.com/search/"+gjc+"-hot-desc-1"#解码URLhtml = requests.get(html).content.decode('utf-8')#解析成xmldom_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        print(links[index].attrib)#获取标签的属性href和class        print(links[index].text)#获取标签的文字部分

打印出来的是

a{'href': 'magnet:?xt=urn:btih:7502edea0dfe9c2774f95118db3208a108fe10ca', 'class': 'download'}磁力链接

该节点的html代码为

磁力链接

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

总结

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

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

你可能感兴趣的文章
华为软件测试工程师与普通软件工程师的区别
查看>>
scala001
查看>>
Struts2环境搭建与测试
查看>>
网页设计心得
查看>>
NYOJ-195 飞翔
查看>>
添加附属组
查看>>
Nginx反向代理svn服务器提交文件出现500错误
查看>>
自己手动复现一个熊猫烧香病毒
查看>>
很简单的JS点击复制(代码)
查看>>
SQL Server 导入excel时“该值违反了该列的完整性约束”错误
查看>>
SAP 开源 SCA 工具,扫描软件包依赖漏洞
查看>>
嵌入式Linux学习方法——给那些彷徨者(上)
查看>>
Spark中Lambda表达式的变量作用域
查看>>
Zabbix3.4.2的agent端配置和安装
查看>>
mysql备份时候两个很有用的参数
查看>>
SpringBoot(三)_controller的使用
查看>>
LinkedBlockingQueue源码解析
查看>>
Kotlin 1.3 新特性抢先看,协程已稳定并将向后兼容
查看>>
Parat-基于kali2018的远程管理工具
查看>>
ES6(正则扩展)
查看>>