Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助!

本篇文章紧接上一篇文章,python金融分析小知识(11)——python爬虫工具Postman神器的使用

在上一篇文章中,我们通过Postman得到了想要爬取的页面的HTML结构数据,具体爬取的代码如下:

## postman工具的使用
import requestsurl = "https://travel.qunar.com/p-cs299782-xiamen-jingdian"payload={}
headers = {'authority': 'travel.qunar.com','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,zh-TW;q=0.5','cache-control': 'max-age=0','cookie': 'QN1=0000918034fc4118d820961d; QN269=65706FF0C82711EC859AFA163E515513; _i=ueHd8LkXXXV0bDSA-9fQKGvqE11X; fid=e0ca98b5-69ba-49ae-af45-eb75ae47171f; viewdist=299782-6; uld=1-299782-6-1652167178; JSESSIONID=07447CB2149341056CEBB815F1EDF0F6; qunar-assist={%22version%22:%2220211215173359.925%22%2C%22show%22:false%2C%22audio%22:false%2C%22speed%22:%22middle%22%2C%22zomm%22:1%2C%22cursor%22:false%2C%22pointer%22:false%2C%22bigtext%22:false%2C%22overead%22:false%2C%22readscreen%22:false%2C%22theme%22:%22default%22}; QN205=organic; QN277=organic; QN267=08897278013e594d4; csrfToken=pG8P5YxlawgK4xLy5gqboMfjzc3PL8f6; ariaDefaultTheme=undefined; _vi=ZVM5OVJRff5-WqKRSR8z-1-5wsxUZFKe3HjjzY36FjM2dAB9Kid_TTlErMLyxiV_LRIKgmGxb1f112lFh2V3k5KmcOWUWaXPhZABjEAJYERJXu6lED-BVDqGdxMi6Cpadvxt5kTHWmL-GrSJVgDkNAHwEu1STc_ZoDyrwh6qiywq; Hm_lvt_c56a2b5278263aa647778d304009eafc=1651283208,1651290050,1651291263,1652167180; Hm_lpvt_c56a2b5278263aa647778d304009eafc=1652167180; QN271=749e150b-d9b2-49a3-960a-7fa27373fbfb; SECKEY_ABVK=LG1DqJApvTrEf9k99/qQFt4OsSw6VpB+noTf6BSInqQ%3D; BMAP_SECKEY=H2dLlEk7yFbg2TroK6omHBgP0C5Z8rMsdadN13glWW_rmOYweLnZ20x1TWwCuwF_fS_aLBiPAVFI2Eh4KJKMatp-gktEUhpMzj_VFo_15mVV-TTyqV2tV6Q-rw6Fe0Y4fTbjUCcMrevzr_y8nlhxtFjgLVgD9kStuYoAs3HtEVcZwevbYDQHNfSSiMcsyq-D; JSESSIONID=A5E2B3B84C33240FFD867ABCE81BB2AA; uld=1-299782-7-1652167254; viewdist=299782-7','sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="101", "Microsoft Edge";v="101"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'document','sec-fetch-mode': 'navigate','sec-fetch-site': 'none','sec-fetch-user': '?1','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36 Edg/101.0.1210.39'
}response = requests.request("GET", url, headers=headers, data=payload)
result = response.text
print(result)

我们看一下打印出来的结果:

这个其实就是我们想要爬取的网页的页面源代码,那么怎么确定我们想要爬取的 内容在不在这个页面源代码里面呢?我们可以通过Ctrl+F来进行查找,比如说我们想要爬取的景点名:“鼓浪屿”:

我们可以发现,页面源代码里面是存在“鼓浪屿”的,也就是存在我们想要爬取的内容。

接下来我们使用xpath解析器在在HTML结构中去寻找我们想要的内容:

其实这部分最关键的问题就是我们要在在HTML结构中一层一层地去寻找我们想要地内容,一旦我们获得了想要爬取的内容的“路径”,那么一切问题就得以解决了:

1.首先我们通过xpath解析一下HTML结构

from lxml import etree
html = etree.HTML(result)
print(html)

我们可以打印一下结果看看,这个其实HTML数据就是经过xpath解析之后的结果:

<Element html at 0x23997f9fcc0>

2.寻找想要的内容的“路径”

代码段如下,通过这样的“路径”我们就可以找到我们想要的内容:

cn_title = html.xpath('//li[@class="item"]/div[@class="ct"]/div[1]/a[@class="titlink"]/span[@class="cn_tit"]/text()')
print(cn_title)

打印结果看一下,大家看这是不是就是我们想要得到的景点名:

3.路径解释与讲解

那么我们是怎么得到上面的xpath路径的呢?下面将进行讲解:

首先我们通过开发人员工具点击“检查”,这个时候我们可以去网页中选择我们想要的内容,这里比如说是“鼓浪屿” ,然后右侧界面就会弹出“元素”,这里面我们可以很明显地看到我们想要地内容:

通过以上的步骤我们知道了“鼓浪屿”的位置,那么我们通过怎样的“路径”才能到达(找到)这个位置呢?接下来我们要做的就是确定“路径”:

从上面这张图其实我们可以看出,HTML结构就是一层一层的,我们在寻找想要的内容时,就是需要通过这一层一层的结构去找。

现在我们来解释一下之前的代码:

cn_title = html.xpath('//li[@class="item"]/div[@class="ct"]/div[1]/a[@class="titlink"]/span[@class="cn_tit"]/text()')
//li[@class="item" //li 代表可以查找页面源代码中的所有li标签
[@class="item"] 代表要寻找的li标签的class属性值是“item”
/div[@class="ct"] /div 代表查找li标签的下一个标签:div,并且这个div标签的class属性值是“ct”
/div[1] 代表继续往下一层寻找div标签,如果有两个同级的div标签,我们这里取的是第一个,也就是div[1]
/a[@class="titlink"] 代表继续往下一层寻找a标签,并且这个a标签的class属性值是“titlink”
/span[@class="cn_tit"] 代表继续往下一层寻找span标签,并且这个span标签的class属性值是“cn_tit”
/text() 表示提取span标签里面的文本内容,也就是“鼓浪屿”

好啦,这样大家是不是就对xpath的使用有了更清晰的认识啦!今天的文章就分享到这里啦!

python金融分析小知识(12)——python爬虫工具xpath使用相关推荐

  1. python金融分析小知识(30)——比较常见的pd.set_option的使用

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 哈喽大家好,今天我要给大家讲讲在pandas的 ...

  2. python金融分析小知识(22)——时间序列之Timestamp对象的处理

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 在我的这篇文章中我有介绍到时间序列中的Tims ...

  3. python金融分析小知识(38)——Jupyter Notebook更改文件路径

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 大家好,好久不见我又来啦!今天要给大家分享的小 ...

  4. python金融分析小知识(27)——如何通过python连接Wind(万得)数据库

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天要个大家讲的是一个十分重要的知识,在我们平 ...

  5. python金融分析小知识(14)——matplotlib多子图绘制(结合股票收盘价数据)

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天给大家讲解一下我平时在进行数据可视化的时候 ...

  6. python金融分析小知识(1)——解决jupyter色彩风格以及风格调整后的绘图显示设置

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 想必大家都经常用jupyter,关于jupyt ...

  7. python金融分析小知识(34)——年化收益率、年化波动率以及夏普比率的计算

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 大家好呀 好久不见!最近忙的事情太多了 没来得 ...

  8. python金融分析小知识(19)——NLP初探之LDA话题建模

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 让机器帮助我们在海量的文本中快速找到关键信息, ...

  9. python金融分析小知识(35)——最大回撤的计算

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天就给大家讲讲在进行量化策略回测结果分析的时 ...

最新文章

  1. javaweb学习总结(二十六)——jsp简单标签标签库开发(二)
  2. element-ui介绍
  3. Java线程状态分析
  4. pythondatetime_Date
  5. Summary Day30
  6. [剑指offer]面试题第[53-1]题[JAVA][在排序数组中查找数字-1][二分法][暴力法]
  7. Redmi K50系列年后登场:最高搭载天玑9000+2K直屏
  8. jquery 访问.ashx ashx取所传参数的值
  9. DB与ES混合应用之数据实时同步
  10. python模块搜索原则_python 从小白开始 - 模块,包以及路径搜索
  11. ES6学习笔记二(解构赋值、语法糖)
  12. Python学习笔记—— 面向对象5.异常
  13. android sync 文件夹,如何使用FolderSync在安卓手机上同步文件夹到坚果云?
  14. qq服务器传输文件,QQ离线传文件功能简介
  15. UIUC计算机科学系博士,伊利诺伊大学香槟分校之计算机科学系
  16. 成绩造假!你看到400+大佬,有可能是P图!
  17. vue利用 canvas 在图片上加文字
  18. 今日只为你狂欢-----JAVA线程总结(零基础入门)
  19. 如何修改Julia语言环境的安装包默认安装文件夹的位置
  20. 实战:k8s中基于角色的权限访问控制-RBAC(成功测试-博客输出)-20211005

热门文章

  1. Multi-Task GANs for View-Specific Feature Learning in Gait Recognition论文翻译以及理解
  2. Python eval、apply、applymap和map函数
  3. Beyond neural scaling laws: beating power law scaling via data pruning
  4. 单片机音乐播放器课程设计C语言,单片机音乐播放器课程设计中音乐代码怎么弄...
  5. 2、电商数仓(业务数据采集平台)
  6. 软件工程结队项目——智能点餐系统典型用户及用户场景分析
  7. 微信小程序的http请求wx.request(实测有效)
  8. echart 柱状图加横线
  9. 制作网页雪花飘飘效果
  10. 模板方法模式实现组合查询