python爬携程_教你使用python爬虫-携程-eleven参数!

本文详细介绍了如何使用Python爬虫解析携程网站的eleven参数。通过分析浏览器中的JS代码,发现eleven的生成涉及到特定的函数调用。在本地执行时,由于缺少特定的require函数导致生成的eleven与官网不符。通过在合适位置添加require函数,最终使得本地生成的eleven与线上一致,揭示了爬虫过程中对网站动态加载内容的处理策略。
摘要由CSDN通过智能技术生成

携程-eleven分析

一、eleven的位置

4dc5aab80172cd71630a543b9e7f466b.png

通过对旁边栈的分析,它是在另一个js文件中调用的。那个js文件是一个自调用的函数,所以我们可以直接copy下来,用浏览器执行看看

执行运行是会报错的, undefind没有call属性

ee17b25046909767e0c9f2b481e51c34.png

经过调试发现,报错这里是想调用window下面的某一个函数,也就是这个对象属性key为29对应的值

49cff0a40f7236d26b6e7aafce6c5bd8.png

a7d1cce5dc5363c7840b4fe6bdb02223.png

所以我们需要将这个函数添加进去

680178cf4fc766ff219a8f742daeb08c.png

312f9654a28d7dfb182c6b0af5454f6f.png

我们再运行一次,这样就不会报错了

0632ec23588830a92820558c129be644.png

虽说能够成功运行,不报错,但是本地生成的eleven的值是跟携程官网生成的eleven是不一样的

4299527c5ada6ea64b163ae29200db7e.png

三、解决方案

这段js代码,肯定是对某一些做了判断,我当时猜想过cookie,因为我就是在浏览器中运行,浏览器的一些标识肯定都是一样,又区别的地方应该就是cookie吧。我就就一步一步的调试这这一大段js代码,讲真确实让人看得头疼

872ce0580d44ca0d47badb50973562c9.png

刚开始看确实没多少耐心,点的也很快,也没什么技巧。

有一个老哥说,他能在浏览器执行那段js代码,并且与携程官网的参数能对上。他是新建一个窗口浏览器,通过控制台将js代码copy,再进行调用,我试了下真的可以。我就很奇怪了,那就排除跟cookie有关了。

后面我还是继续调试那段js代码(我是在携程网站进行调试的),发现那段js调用了 3 这个位置的函数,是一个 require 函数,每次调用都抛了异常,它有异常捕捉的代码,所以不会崩掉。

我再调试着本地代码,发现我是没有这个函数的,我再去新建一个浏览器窗口,window.require输出为一个函数,这下终于知道哪里不对了

3706af4590212c8f00b1b1eacffdede0.png

fe8c7514c54dd44a623e06eec022ce2d.png

所以我只需要在 3 那个位置添加这个函数就行了,上面也说过,携程网站它调用这个函数都是抛异常的,所以我们这样写就好了。

63df826c4465b17512df20b17e9d7990.png

为了防止巧合,我试了很多次,本地和线上生成的eleven都只差一位,意思是说他肯定还对某一项做了检测。

62297cd1f4efa6f6c89133e59ff3d283.png

6f1d9a0619434cc8375e1bafe91af167.png

四、补充

需要注意的几个函数,不是说其他函数不重要,也很重要,但这个比较关键。

68a890fbdf524ccab53d6a02dda4f08c.png

3b61ecf4edec6ce9b106615595a27ea9.png

fee1951caa93c3aacdb9ab4c33761929.png

335b12e7cd287778de4b987b4c74d097.png

五、node环境

再弄node环境之前,必要浏览器执行后的eleven要和携程网的对得上,node环境缺什么,报什么错,再跟本地浏览器进行调试。过程肯定不是一帆风顺,但是解出来的时候,会莫名激动

dbfacefe058e0e5c0af497dd2396f841.png

此文转载文,著作权归作者所有,如有侵权联系小编删除!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值