爬取淘宝信息:
1,可用selenium模块与driver Chrome插件自动化模拟爬取。
2, 进行抓包爬取。
下面一一进行介绍并且贴出实现代码。但是在此必须说明一下,因为时间有限,相关模块不懂的还需要自行搜索,在此不做教程解说,只提供分析思路与代码实现过程。
学习博客推荐:https://cuiqingcai.com,
实际上我也是根据此博客学习到了一些知识,也是我参考学习的唯一博客。
自动化模拟爬取
python爬虫的selenium模块是一个可以实现模拟浏览器相关动作,并且可跳过JavaScript动态渲染直接返回其网页源代码的一个自动化测试工具。如下我们需要爬取关键词为MacBook Pro的商品信息,可用它来实现自动翻页并且返回每一页的源代码直接进行相关信息的爬取。
分析过程
下面直接进行分析过程。
首先打开淘宝主页:https://www.taobao.com ,进入其中输入关键词观察一下页面,可以看到下面翻页的一些跳转功能。(以下使用的都是Chrome自带的开发者工具)
因为要实现自动翻页的过程,则我们需要查看有关翻页这个功能按钮的源代码是什么样子。其中涉及到了输入框,然后点击旁边的确定按钮。
输入框对应的源代码。
确定按钮对应的源代码。
在知道了以上的一些按钮信息之后我们还需要知道翻页之后目前对应的页数在哪,以便在对应的页数正确之后,可以得到对应页面的源代码,这样可直接运用一些相关的模块进行节点锁定爬取即可。
确定页数码的源代码。
页面上商品信息的html源代码。
为什么要这样分析每一个相关功能的源代码?因为在selenium模块中可以实现自动化的过程,但是需要指定页面上相关的源代码才行,对于selenium来说等于开放了这个功能的接口一样。
思路分析:将要用相关模块挖掘源代码信息做为一个函数,将要爬取的页面源代码做为一个函数,其中实现自动翻页功能,即若是大于1,自动跳到其页面并且返回其页源代码,否则返回第一页页面的源代码。最后代入前者挖掘的函数。
代码实现
|
|
当然还可以进行正则表达式的匹配来完成爬取,因为需要时间来测试相关的表达式,所以推荐用pyquery这个库来完成爬取工作,相比于使用过的beautiful模块以及正则表达式,我感觉轻松了不少。
抓包爬取
以下的抓包是利用的Chrome浏览器完成的,在这之前说了,因为时间关系,关于抓包是什么就不在此做详细介绍了…相信你看了我下面的分析过程会隐约明白一点。
分析过程
打开淘宝主页,输入关键词,在第一页上打开Chrome自带的开发者工具,这样就可以看到第一页的源代码信息了。以下图过程可以看到我们在第一页抓到的相关的淘宝API的数据包。里面有相关的商品信息,均为json格式。
其中的XHR格式不懂可参考此篇文章:https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest
浏览器新建一个标签页,打开上面的那个地址看看有什么。
经过一系列的测试发现了其中的那个参数bcoffset=是跳转的决定点,更改其值可得到不同的信息。这样我们进行思路分析就一目了然了。
思路分析:传入上面的说的API的URL,根据上面的那个参数的值更改,返回其中的文档信息,即可爬取到商品信息。
代码实现
|
|
最后
第二种方法期间原本以为可以先转化为json格式来进行处理,没想到发生了json.decoder.JSONDecodeError:的错误,结果改用正则表达式进行文本的挖掘,效率也是无形中得到了提升…在此我推荐用正则表达式来处理json格式的文档,这样在绝大多数情况下可能会有更高的效率!
爬取到的数据可用来进行一些数据分析等等。有时想尝试用各种方法去爬取,但是因为学的东西真的多,所以就不一一尝试了,尽量使用简便的方法…不懂的朋友还需要多多学习,利用好搜索引擎!当然看书也是必须的。
更新
经网友反馈,第二种用后门链接抓包爬取淘宝商品信息的方法已经失效了…在此很遗憾未能尽力帮助到需要的人。
如果以后用得到,我会在此补上新的方法。