爬取动态网页的方法,python爬取动态网页数据

  爬取动态网页的方法,python爬取动态网页数据

  动态页面抓取我已经很久没有写爬虫了今天我在——敲出了一段爬百度百科的历史结果时隔四个月再次遇到的对手,居然是一个动态页面(一开始觉得百度太简单了),但是经过一番努力,还是达到了目的,然后写了一篇博客作为点评

  首先,动态页面的概念实际上是相对于静态页面而言的面对静态页面时直接看响应,一般是网页的全部代码,而不是动态页面一般再打开动态页面的响应,和你在网页上看到的不一样

  二、练习练习之前,因为我很喜欢练习,所以我不说什么练习,练习出真知,多练习让我明白

  目标页面:万科百度百科版本历史

  实现环境:win32

  版本:python 3.6.2

  做法:获取万科百度百科版本历史的历史修订时间,制作成图表或csv文件

  三过程描述和所有爬虫一样,我们第一步会分析网页因为我们选择了一个动态网页作为目标,所以我们还需要跟踪json文件等

  流程:

  1.网页分析

  2.查询和跟踪json和其他文件或xhr

  3.执行文本匹配

  4.绘制或制作csv

  四工具准备我们需要的库有(都是最新版本):

  1 .请求

  2 .回复

  (以下库对爬虫来说不是必须的,但这次我需要)

  3.matplotlib(用于可视化)

  4 .日期时间(按时运行)

  5.Pandas(python强大的数据处理库)

  6.os(操作系统)

  (我更喜欢原来的re库,当然在这里使用正则表达式已经能够解决所有问题)

  所需知识:

  1.python语法基础

  2.正则表达式的匹配规则

  (以下对于爬行动物不是必须的)

  3.3.datetime的一些基本功能

  4.4.matplotlib可视化的操纵(虽然这一项对于爬虫来说并不是必须的,但是在很多情况下,数据可视化会让数据更加直观,更容易让人做出判断)

  5.5.pandas库的基本使用(这个项目对于crawler不是必需的,但是对于数据分析是必需的)

  动词(verb的缩写)网页分析首先我们打开我们的目标网页→万科百度百科版本历史

  看起来一切正常,然后我们查网址,也有前面说的规则,但是一切真的正常吗?

  如果你把这个网页当成静态页面,那肯定就完了,因为我一开始就是这么做的当jwdbb查询第一页的代码时,你会发现一切正常但是,当你查询第二页的代码时,你会发现3354与第二页的最后一个代码甚至到最后一页都是一样的你觉得有违常理吗?

  不及物动词跟踪实际上并非如此这是很正常的事情很多页面会做成动态的,用json或者其他文件来传输数据(可能不准确,也可能用java,JavaScript等代码调用端口等等).这样更安全

  在这一点上,很多人会选择使用fiddle等第三方软件来抢包,这样更方便,但我直接在控制器平台上看就比较困难了

  经过一番搜索,我们锁定了几个我们需要的文件和xhr文件

  很多网页的数据都会隐藏在json中这也是吗?当然,查了一下,失败了,于是我们看到了xhr,找到了这个熟悉的领域(当然,我可能也很熟悉)

  显而易见的答案在这里下面简单解读一下这一条

  Get historylist获取历史数据

  我猜这个tk是万科的quantio语句(不知道这个词是不是拼错了,但是我自己真的用的比较少,搞前后的朋友可能都知道)

  Lemmald,这不是万科在百度的号吗?

  从一眼就能看出这是第七页

  大小显示25条消息

  这个发现很棒,解决了很多问题

  七伪装作为一个爬行者玩家,非常有必要知道反爬行者的套路在这里,如果你正常抓取xhr,你会发现返回给你的是{error:xxxxx

  },此时要警惕,这证明你的机器人的身份已经被百度发现了,百度拒绝给你数据,所以我们需要做一些简单的伪装。以前讲过换头,这次多讲一点。

  1 .标题伪装。服务器以此来判断你使用的浏览器。有这个的时候,服务器会认为是浏览器的正常请求。

  2.裁判:浏览器用这个来确定你从哪个网页跳转。

  3.ip化妆舞会。只要ip池建好,就没问题。建议去Westthorn代理查一些要求。

  4 .饼干伪装。服务器使用Cookies来识别您此时的状态。比如你已经登录等。每次您从服务器请求cookies时,它们都会相应地更新。

  最常用的就是上面这些,从上到下越来越难整合。面对百度,光是改头换面显然是不够的,所以我加了Referer和cookie代码(重点是两个月前建立的IP池已经废了,我也懒得整合了)。

  嗯,我们发现可以正常获取数据。

  八。文本匹配不得不说,解决了以上问题之后,文本匹配变成了最简单的事情。

  其实这是一个类似字典的格式,但是懒得思考的作者决定用简单粗暴的正则表达式。

  九。转换时间戳这个时候我们会发现,creattime给出的时间是什么鬼?

  但如果你仔细想想,你会发现这是一个时间戳。

  python的时间戳:从1970年1月1日凌晨12:00到现在的秒数。

  是不是很破?

  幸运的是,只需要几小段代码就可以解决这个问题。

  输入时间戳,OK,问题解决。

  十、绘图,csv图。

  csv

  XI。总结和代码。感觉这个爬虫还可以。两个多月了,我还记得,真的不容易。写这篇博客纯粹是一篇评论。至于它不写怎么画怎么做csv的原因,我能说是博主突然不想写了吗?

  下面的代码是:https://github.com/Don98/Spier_project/blob/master/wanke.py.

  (注:博主懒得写笔记。有不懂的可以评论提问。谢谢你。)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: