最详细爬虫零基础教程11——html格式提取之xpath


一、html和xml

lxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息。

区别:
1.xml被设计为传输和存储数据,其焦点是数据的内容
2.html是显示数据以及如何更好的显示数据

区别
xml树结构展示
xml
XML结构 eg
xml

XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。

二、xpath获取节点属性

XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。

每个XML的标签我们都称之为节点,其中最顶层的节点称为根节点。

节点
xpath中节点的关系
在这里插入图片描述
这里给大家推荐一个学习工具,Chrome插件(xpath_helper),百度网盘:https://pan.baidu.com/s/1UM94dcwgus4SgECuoJ-Jcg 密码:337b

三、xpath语法

  1. 选取节点
    XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
    xpath

  2. 查找特定的节点
    特定节点
    注意点: 在xpath中,第一个元素的位置是1,最后一个元素的位置是last(),倒数第二个是last()-1

  3. 选取未知节点
    未知节点

为了加强对xpath的理解,多多练习才是正道:https://movie.douban.com/top250

练习1

  • 选择所有的h1下的文本
    //h1/text()
  • 获取所有的a标签的href
    //a/@href
  • 获取html下的head下的title的文本
    /html/head/title/text()
  • 获取html下的head下的link标签的href
    /html/head/link/@href

练习2
从豆瓣电影top250的页面中:选择所有的电影的名称,href,评分,评价人数

四、案例展示

xpath提取豆瓣单页内容

from lxml import etree
import requests

if __name__ == '__main__':
    url_ = 'https://movie.douban.com/top250'
    headers_ = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
    }
    response_ = requests.get(url_,headers=headers_)
    str_data = response_.text
    print(response_.text)
    # 在提取任何网站的文本数据之前,先打印响应文本看看有没有想要的数据,如果有,再往下写代码,如果没有,再重新找数据包

    # str类型无法直接被xpath识取
    html_obj = etree.HTML(str_data)

    title_list = html_obj.xpath('//a/span[@class="title"][1]/text()')
    # print(len(title_list),title_list)

    url_list = html_obj.xpath('//div[@class="hd"]/a[@class=""]/@href')
    # print(len(url_list),url_list)

    dict_ = {}
    for i in range(len(title_list)):
        dict_[title_list[i]] = url_list[i]
    print(dict_)

总结

这两天我们学习的量有点大,各位uu们可以根据自己的情况来学习,主要是去多花时间练习。

以良好的心态面对生活,你的生活才美好。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莘薪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值