您的位置:首页 > 科技 > 能源 > 电商b2b_北京市朝阳区官方发布_站长统计app软件下载2021_千锋教育郑州校区

电商b2b_北京市朝阳区官方发布_站长统计app软件下载2021_千锋教育郑州校区

2024/11/16 22:30:15 来源:https://blog.csdn.net/2301_77869606/article/details/142259772  浏览:    关键词:电商b2b_北京市朝阳区官方发布_站长统计app软件下载2021_千锋教育郑州校区
电商b2b_北京市朝阳区官方发布_站长统计app软件下载2021_千锋教育郑州校区

数据提取

        

数据提取总结  
    响应分类  
        结构化  
            json数据(高频出现)  
                json模块  
                jsonpath模块  
            xml数据(低频出现)  
                re模块  
                xml模块  
        非结构化  
            html  
                re模块  
                xml模块

xml以及和html的区别
        xml传输和存储数据
        html展示数据

jsonpath的用法:多层嵌套的复杂字典直接提取数据

  
 

常用记住三个就行:$(根节点)        .(子节点)        ..(相对索引) 

练习链接:http://www.lagou.com/lbs/getAllCitySearchLabels.json 

# -*- coding: utf-8 -*-import jsonpath
import requests
import jsonheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'
}
response = requests.get('http://www.lagou.com/lbs/getAllCitySearchLabels.json', headers=headers)dict_data = json.loads(response.content)# print(jsonpath.jsonpath(dict_data, '$..A..name'))print(jsonpath.jsonpath(dict_data, '$..name'))

 xpath的用法:处理lxml模块

学习链接:XPath 教程 (w3school.com.cn)

 使用工具:xpath helper(快速定位所求数据位置)

  1. 基本结构

    • html
    • /html/head/title
    • /html/title
    • //title
    • //title/text()
    • //link/@href
    • 斜杠隔开的是节点,/ 绝对索引,// 相对索引
  2. 说明

    • //title/text(): 从当前节点之上获取文本内容。
    • //link/@href: 从当前节点的子节点中获取属性值。

节点修饰语法:
1.通过索引修饰节点

        /html/body/div[3]/div/div[1]/div
        /html/body/div[3]/div/div[1]/div[3]
        /html/body/div[3]/div/div[1]/div[last()]        选中最后一个
        /html/body/div[3]/div/div[1]/div[last()-1]        选中倒数第二个
        /html/body/div[3]/div/div[1]/div[position()>=10]        范围选择
2.通过属性修饰节点

        //div[@id="content-left"]/div/@id     第一个@是使用标签属性修饰,第二@个是具体内容
3.通过子节点的值修饰节点

        //span[i>2000]
        //span[2>=9.4]
4.通过包含修饰

        //div[contains(@id,"qiushi_tag_")]
        //span[contains(text(),"—页")]
5.复合使用语法
        //h2/a | td/a             xpath 复合使用语法(跳转页面后xml结构变化)

***找翻页url时候尽量不要使用索引(翻页后xpath可能就变化不对了) 

 

 

 

 

# -*- coding: utf-8 -*-
from lxml import etreetext = '''
<div>  <ul>  <li class="item-1"><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 树结构,结果为字符串或者对象内存地址
html = etree.HTML(text)
# print(html)
# # dir() 查看html对象(即解析后的 HTML 树)所具有的所有属性和方法
# print(dir(html))# print(html.xpath('//a[@href="link1.html"]/text()'))
# print(html.xpath('//a[@href="link1.html"]/text()')[0])# 方法一:提取HTML文档中所有链接的文本和对应的链接地址
text_list = html.xpath('//a/text()')
link_list = html.xpath('//a/@href')
# for text in text_list :
#     myindex = text_list.index(text)
#     link = link_list[myindex]
#     print(text,link)# 方法二:
# for text,link in zip(text_list,link_list):
#     print(text,link)# 方法三:上面方法如果存在数据缺失的情况不能发现问题
el_list = html.xpath('//a')
for el in el_list :print(el.xpath('./text()')[0],el.xpath('./@href')[0])

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com