zoukankan      html  css  js  c++  java
  • xpath中遇到[<Element a at 0x39a9a80>](转)

    Element是什么

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

    <Element a at 0x39a9a80>
    或者类似 Element a at 0x???????,这样的一个值,某种意义上来说,当你打印变量的时候得到的这个值,其实它是一个列表,然后列表中的每一个值都是一个字典

    from bs4 import BeautifulSoup
    from lxml import etree
    import requests
    
    gjc='SHKD-700'
    
    html = "http://www.btanv.com/search/"+gjc+"-hot-desc-1"#定义URL
    
    html = requests.get(html).content.decode('utf-8')#解码URL
    
    dom_tree = etree.HTML(html)#解析成xml
    
    links = dom_tree.xpath("//a[@class='download']")#在xml中定位节点,返回的是一个列表
    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" class="download">磁力链接</a>

     

    总结

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

     

    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)
  • 相关阅读:
    Spring读取properties内容
    SpringBoot全局异常处理
    Hibernate入门
    Oracle查询表及注释
    MySQL重复与不重复问题
    IDEA中other settings不见了
    01程序员修炼之道
    团队冲刺(四)
    单词字母查询频率
    学习进度(9)
  • 原文地址:https://www.cnblogs.com/z-x-y/p/8260213.html
Copyright © 2011-2022 走看看