[爬虫]解决机票网站文本混淆问题-实战讲解

这篇具有很好参考价值的文章主要介绍了[爬虫]解决机票网站文本混淆问题-实战讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 前言

最近有遇到很多小伙伴私信向我求助,遇到的问题基本上都是关于文本混淆或者是字体反爬的问题。今天给大家带来其中一个小伙伴的实际案例给大家讲讲解决方法

📝个人主页→数据挖掘博主ZTLJQ的主页

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫​​

个人推荐python学习系列:

☄️爬虫JS逆向系列专栏 - 爬虫逆向教学

☄️python系列专栏 - 从零开始学python


首先呢我们要讲的就是去哪儿网实战案例,那么私信我的这位小伙伴呢是想爬机票的信息,那么我们首先第一步就是打开网站

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 打开网站以后呢,我们就可以随便选择一个飞机的方向,比如我选择北京到马尼拉的机票,点击以后就会出现这个画面如下:

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 我们可以看到,每一个时间段、航班的不同都会产生不同的价格,那么按照平时我们看到这样的静态网站直接打开F12定位一下价格,用XPATH或者正则表达式就直接爬取完毕了,但是这个问题就出现在这里了,让我们打开F12抓包工具,定位到价格会出现如下图所示的画面:

网页显示的价格

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 网页源码中定位到标签元素的价格

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 我们可以看到,b标签下的i标签拼凑起来是978 和原本的价格971是不一样的,但是我们又可以发现一个规律,b标签下面还有一个b标签,这个b标签中的1就是我们需要的价格,如下图:

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 似乎我们已经找对方向了,那么接下来我们多看看几个价格,找一下其中的规律,我们接着往下面看一个价格如下图:

网页显示的价格

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

  网页源码中定位到标签元素的价格

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 我们会发现b标签下的i标签是9412明显不是我们想要的数据,但是下面的b标签中131不就是我们需要的数据吗?如下图:

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 这里我们会发现9412中最后一个2是我们要的数据,下面的b标签中131也是我们需要的数据,这个数据再按顺序排列一下就是1312就成为了我们的价格,但是这个顺序是怎么看的呢?我们仔细看,下面的b标签中style元素中有一项 left:-64px,这个值得引起我们的注意,在前端中px代表的是像素,也就是移动的举例,left表示左边,我们发现前面有一个width=16px,是不是说明每一个数字的占位宽带代表着16个像素,而1这个数字要向左移动64个像素,也就是最前面,这样就说的过去了,如下图:

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 [爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 文章来源地址https://www.toymoban.com/news/detail-528622.html

那么我们就可以知道,上面的i标签是用来迷惑我们的,下面的b才是我们需要爬取的数字,并且b标签的style代表的是偏移的位置,也就是用来帮助我们对数字进行排序的,那么有了这个思路我们就可以开始写代码了。

首先呢我们先写一个文本,可以直接复制机票网站源码中偏移的标签

"""

text = """
<em class="rel">
    <b style="width:64px;left:-64px">
        <i title="1275" style="width: 16px;">4</i>
        <i title="1275" style="width: 16px;">2</i>
        <i title="1275" style="width: 16px;">6</i>
        <i title="1275" style="width: 16px;">5</i>
    </b>
    <b title="1275" style="width: 16px;left:-32px">7</b>
    <b title="1275" style="width: 16px;left:-16px">5</b>
    <b title="1275" style="width: 16px;left:-64px">1</b>
</em>
"""

 接下来导入相应的库,然后写一个空的列表,先把所有的i标签文本获取下来,存入到空列表当中,如下图:

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 接下来呢,我们根据上面的规律,需要替换的i标签只有后面3个,所有我们只取新建列表的后3个数据,然后准备替换成b标签中的数据,其次我们需要获取b标签中的文本数据也就是数字,还有style中偏移的数据,用来准备替换新建列表中的排序顺序。

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

 最后获取style的值,替换偏移的数字即可

[爬虫]解决机票网站文本混淆问题-实战讲解,爬虫实战案例,爬虫

下面是所有的代码大家可以参考: 

text = """
<em class="rel">
    <b style="width:64px;left:-64px">
        <i title="1275" style="width: 16px;">4</i>
        <i title="1275" style="width: 16px;">2</i>
        <i title="1275" style="width: 16px;">6</i>
        <i title="1275" style="width: 16px;">5</i>
    </b>
    <b title="1275" style="width: 16px;left:-32px">7</b>
    <b title="1275" style="width: 16px;left:-16px">5</b>
    <b title="1275" style="width: 16px;left:-64px">1</b>
</em>
"""


import re
from lxml import etree


content = etree.HTML(text)

# 先保存列表 到占位的数据
zhanwei = []
for i in content.xpath('//em[@class="rel"]/b/i'):
    zhanwei.append(i.text)


# 定位到后面3个b标签 也就是去除第一个先
tag = content.xpath('//em[@class="rel"]/b')[1:]
a1 = [(i.text,i.xpath('./@style')[0]) for i in tag]
# 获取styles的偏移值
for p,style in a1:
    styles = re.findall('width: 16px;left:-(.*?)px',style)[0]
    print(styles)
    # 替换 偏移值
    zhanwei[-int(styles) // 16] = p

print(zhanwei)

当然可能有的小伙伴没有见过-int这种写法,其实还有一种写法,我给大家举例让大家对比使用

# 2种写法
"""
for p,style in a1:
    styles = re.findall('width: 16px;left:(.*?)px',style)[0]
    print(styles)
    # 替换 偏移值
    zhanwei[int(styles) // 16] = p
"""

"""
for p,style in a1:
    styles = re.findall('width: 16px;left:-(.*?)px',style)[0]
    print(styles)
    # 替换 偏移值
    zhanwei[-int(styles) // 16] = p
"""

那么我们就可以完成这种偏移的数据的爬取了,具体大家想要爬取那些数据,大家可以自行写代码,方法和思路都教给大家了,大家加油吧!!!

 

 

到了这里,关于[爬虫]解决机票网站文本混淆问题-实战讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【爬虫实战】python文本分析库——Gensim

    Gensim是一个用于自然语言处理和文本分析的 Python 库,提供了许多强大的功能,包括文档的相似度计算、提取和文档的主题分析,要开始使用Gensim,您需要安装它,再进行文本分析和NLP任务,安装Gensim可以使用pip: Gensim是一个强大的Python库,用于执行主题建模和文本相

    2024年02月22日
    浏览(42)
  • 绕开网站反爬虫原理及实战

    在本文中,我首先对网站常用的反爬虫和反自动化技术做了一个梳理, 并对可能能够绕过这些反爬技术的开源库chromedp所使用的技术分拆做一个介绍, 最后利用chromedp库对一个测试网站做了爬虫测试, 并利用chromedp库绕开了爬虫限制,成功通过程序自动获取到信息。在测试过程中,顺

    2024年02月06日
    浏览(35)
  • python爬虫实战(1)——网站小说

    经过学习基础,我们学以致用一下子,爬取小说,注意这个小说本身是免费的哦,以后再进阶。 本次为实战记录,笔者很多碎碎念可忽略 基于requests库和lxml中的xpath编写的爬虫,目标小说网站域名http://www.365kk.cc/ 这是网上找的,小说网址很多,而且没有很多反扒机制,新手友

    2024年02月13日
    浏览(36)
  • 爬虫逆向实战(二十)--某99网站登录

    主页地址:某99网站 1、抓包 通过抓包可以发现登录接口是AC_userlogin 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”可以发现 txtPassword 和 aws 是加密参数 请求头是否加密? 无 响应是否加密? 无 cookie是否加密? 无 1、看启动器 查看启动器发现有一个 NDUser_L

    2024年02月11日
    浏览(49)
  • 【爬虫系列】Python爬虫实战--招聘网站的职位信息爬取

    1. 需求分析 从网上找工作,大家一般都会通过各种招聘网站去检索相关信息,今天利用爬虫采集招聘网站的职位信息,比如岗位名称,岗位要求,薪资,公司名称,公司规模,公司位置,福利待遇等最为关心的内容。在采集和解析完成后,使用 Excel 或 csv 文件保存。 2. 目标

    2024年02月02日
    浏览(51)
  • 爬虫笔记(一):实战登录古诗文网站

    需求:登录古诗文网站,账号+密码+图形验证码 第一 :自己注册一个账号+密码哈 第二 :图形验证码,需要一个打码平台(充钱,超能力power!)或者tesseract开源包,这两个用于自动识别图形验证码哈~ 我用的是超级鹰,充了1块,有1000积分,一次10积分,初学者福音hhh

    2024年01月20日
    浏览(36)
  • 〖Python网络爬虫实战⑱〗- 数据存储之TXT纯文本

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                 python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2023年04月24日
    浏览(62)
  • 爬虫实战-手把手教你爬豆瓣电影 | 附详细源码和讲解

    写在前面的话 目前为止,你应该已经了解爬虫的三个基本小节: 来源:xiaqo.com   正文 明确需求 我们今天要爬的数据是 豆瓣电影Top250 ,是的,只有250条数据,你没猜错。 输入网址  https://movie.douban.com/top250  我们可以看到网页长这样:   ​ 编辑 ​ 编辑 `250条数据`清清楚楚

    2024年04月08日
    浏览(46)
  • 【AI 实战】Text Processing and Word Embedding 文本处理以及词嵌入原理和代码实例讲解

    https://www.youtube.com/watch?v=6_2_2CPB97s 文本处理是自然语言处理(NLP)的一个重要部分,它涉及到将文本数据转化为可以被机器学习算法理解的格式。这个过程通常包括以下步骤: 文本清洗:这是文本处理的第一步,主要是去除文本中的噪声,如特殊字符、数字、标点符号等。

    2024年02月01日
    浏览(49)
  • 大数据毕业设计PySpark+Hadoop航班延误预测 航班可视化 机票可视化 机票爬虫 航班大数据 机器学习 深度学习 人工智能 随机森林树 卷积神经网络 知识图谱 大数据毕业设计 计算机毕业设计

    1.DrissionPage自动化Python爬虫工具采集飞猪网机票航班数据约1-5万条存入.csv文件作为数据集; 2.使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs; 3.使用hive数仓技术建表建库,导入.csv数据集; 4.离线分析采用hive_sql完成,实时分析利用Flink之Scala、

    2024年04月22日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包