目录

一、XPath简介

二、xpath函数

三、步骤

四、结果


一、XPath简介

全称:XML Path Language;

作用:  解析数据(HTML,XML),提取节点与节点包含的内容;

什么是节点?

HTML为例:<body>是一个根节点,<div>,<a>等是根节点的子节点,<div>,<a>等节点包含的节点是他们的子节点,实例如下。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>xpath_test</title>
</head>
<body><div>这里是根节点body的子节点div<div/><p>这里是div的子节点p<p/><a>这里是根节点body的子节点a<a/><p>这里是div的子节点p<p/></body>
</html>

二、xpath函数

2.1、XPath常用函数:

xlm/html对象.etree()函数

使用方法:

2.1.1、etree = tree.xpath("/父节点1/子结点2")->返回的是子节点,返回内容如下:

<Element 子节点2 at 地址>

2.1.2、etree = tree.xpath("/父节点1/子结点2/text()")->返回的是子节点2的文本内容

2.1.3、etree = tree.xpath("/父结点1//子结点2")->返回的是子节点2的全部后代节点

2.1.4、etree = tree.xpath("/父结点1/子结点2/@子节点2的属性值")->返回的是子节点2的的属性值

2.1.5、etree = tree.xpath("./节点/节点")->相对查找,一般在缩小范围准备提取内容时在循环遍历使用。

x = html.xpath()函数

*:表示任意节点

节点[第几个],1开始

./:相对查找

//:绝对查找

/@属性:拿属性的值

/text():拿标签的文本内容

父节点//子节点->显示全部 //->后代

三、步骤

3.1、运行环境:win10家庭版,phcharm edu;

3.2、下载所用的库(提供两种方法):在编辑器(如pycharm)控制台输入:pip install lxml,pip install requests,也可以在编辑器的设置里,Python Interpreter直接搜索包并下载;

3.3、操作步骤

3.3.1、目标实例

天堂电影;

3.3.2、需求

抓取2022新片推荐下载链接(可下载);

3.4、源码

# 天堂电影
# 2022新片from lxml import html
import requests# 发起请求拿源码,发现是get方式传参
url = "https://www.dy2018.com/"
resp = requests.get(url)
resp.encoding = 'gb2312'
resp_content = resp.text
# print(resp_content),测试是否成功拿到源码
# 创建html的etree解析,并把html源码交给etree解析
etree = html.etree
html = etree.HTML(resp_content)# 开始定位
lis = html.xpath('//*[@id="header"]/div/div[3]/div[4]/div[1]/div[2]/ul/li')
# 循环遍历取出
for li in lis:hrefs = li.xpath("./a/@href")# print(hrefs)all_href = ''.join(hrefs)  # 把列表中的元素放在空串中,元素间用空格隔开all_hrefs = url + all_href  # 把链接拼接起来if all_href == "https://www.jianpian12.com/":  # 出现一个没用的干扰链接,去掉all_href = ""else:titles = li.xpath("./a/text()")all_titles = ''.join(titles)  # 把列表中的元素放在空串中,元素间用空格隔开# print(all_titles, end=" ") 拿到电影名称# print(all_hrefs)           拿到电影跳转具体下载链接# 第二次请求resp2 = requests.get(all_hrefs)resp2.encoding = 'gb2312'  # 查看源码,得到编码方式,进行解析resp_content2 = resp2.text# print(resp_content),测试是否成功拿到源码# 创建html的etree解析,并把html源码交给etree解析# etree = html.etreehtml2 = etree.HTML(resp_content2)# 开始定位# ”//*[@id="Zoom"]/div[1]/ul/li/a“# "//*[@id="Zoom"]/div[1]/ul/li/a" 发现每一个的id都一样直接copy,xpath路径进行使用lis2 = html2.xpath('//*[@id="Zoom"]/div[1]/ul/li')for lis in lis2:all_href2 = lis.xpath("./a/@href")all_hrefs2 = ''.join(all_href2)  # 把列表中的元素放在空串中,元素间用空格隔开all_hrefs2 = all_hrefs2.split("=")[-1]# all_hrefs2 = all_hrefs2.split("/")print(all_hrefs2)# 下一步应该是拿到了下载链接的地址进行下载并保存# 但发现链接访问失败(在浏览器访问下载链接也是失败的,很奇怪),先进行到这步,之后在探究是什么问题之后继续补充

四、结果

4.1、返回的结果

五、问题与总结

5.1、问题

5.1.1、爬取到的链接访问不到内容(是否是存在防盗链呢?);

5.1.2、爬取并输出的内容分割性不好,代码需要优化;

5.2、总结

5.2.1、好好学习。

Python--爬虫--XPath入门相关推荐

  1. python爬虫从入门到实战笔记——第四章Scrapy框架

    推荐阅读: python爬虫从入门到实战笔记--第一章爬虫原理和数据爬取 python爬虫从入门到实战笔记--第二章非结构化数据和结构化数据的提取 python爬虫从入门到实战笔记--第三章动态HTM ...

  2. 结构化数据丨Python爬虫基础入门系列(7)

    提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达 文章目录 前言 JSON 1. json.loads() 2. json.dumps() 3. json.dump() 4 ...

  3. Python爬虫从入门到精通——解析库pyquery的使用

    分类目录:<Python爬虫从入门到精通>总目录 解析库使用篇: 解析库re的使用:正则表达式 解析库XPath的使用 解析库Beautiful Soup的使用 解析库pyquery的使用 ...

  4. python爬虫从入门到精通-Python爬虫从入门到精通视频(2018新版)

    原标题:Python爬虫从入门到精通视频(2018新版) Python在软件质量控制.提升开发效率.可移植性.组件集成.丰富库支持等各个方面均处于先进地位,并且随着人工智能的兴起,Python发展得越 ...

  5. Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  6. Python爬虫从入门到精通——爬虫实战:爬取今日头条图片新闻

    分类目录:<Python爬虫从入门到精通>总目录 本文为实战篇,需提前学习Python爬虫从入门到精通中<基本库requests的使用>和<Ajax数据爬取(一):基本原 ...

  7. Python爬虫新手入门教学(十八):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  8. Python爬虫新手入门教学(十七):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  9. Python爬虫新手入门教学(十六):爬取好看视频小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  10. Python爬虫——XPath的使用

    Python爬虫--XPath的使用 使用实例一:获取需要的文字 1.导入需要使用的模块 import urllib.request from lxml import etree 2.发送请求访问网站 ...

最新文章

  1. spyder 崩溃解决方案
  2. KubeVela 1.0 :开启可编程式应用平台的未来
  3. jeecgboot 弹出modal刷新主窗体_保利天汇|自然的温度,刷新园林美学天际/辽宁房产特刊...
  4. 计算机专业导论论文2000字,计算机专业导论论文.doc
  5. 在vue项目中引用element-ui时 让el-input 获取焦点的方法
  6. oracle控制文件全备失败,Oracle数据库案例整理-恢复数据库失败-主备机控制文件所在目录不同...
  7. leetcode109. 有序链表转换二叉搜索树
  8. 【Flink】Flink 的 slotSharingGroup 有什么用
  9. php标签扩展,标签扩展 · ThinkPHP5.0完全开发手册 · 看云
  10. mysql过程分析_mysql事务执行过程分析
  11. python与mongodb更新_Python对MongoDB增删改查
  12. 学前儿童健康教育 复习资料 渝粤题库整理
  13. ceph的rbd使用和理解(全)
  14. flutter插件开发学习之旅(4)-------检测GPS状态,打开GPS和显示经纬度实战
  15. C语言与Java的异同
  16. 一张图掌握薛兆丰经济学讲义的精华
  17. 利用抖音Cookie充值接口提取支付链接,调起原生微信h5支付宝h5支付
  18. ISP—图像调试实习生(第七天)
  19. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]
  20. CLIP: Learning Transferable Visual Models From Natural Language Supervision

热门文章

  1. 2020 Windows10 IIS配置PHP运行环境
  2. 有一种爱情叫做“比悲伤更悲伤的故事”
  3. html转换成xsl,xml+xsl转换为html
  4. PoolingHttpClientConnectionManager实现http连接池
  5. 分布式系统-同步化-时钟同步-物理时钟与Lamport时间戳(逻辑时钟)
  6. 男人刮胡子学问 不能随便刮
  7. 数字信号处理相关1(卷积(convolution)的几种解释)
  8. 最动听的声音 2019年农历腊月二十六
  9. 铁匠发布:可执行文件,资产,工具和着色器
  10. 深入理解Android之设备加密Device Encryption