网页爬虫抓取百度图片(爬取百度百科的历史记录,结果在时隔四个月之后再次遇到的对手)

优采云 发布时间: 2022-02-06 01:03

  网页爬虫抓取百度图片(爬取百度百科的历史记录,结果在时隔四个月之后再次遇到的对手)

  动态页面爬取

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

  一、概念

  动态页面实际上是相对于静态页面的。面对静态页面时,直接查看响应一般是网页的整个代码,而对于动态页面则不然。一般来说,当再次打开动态页面的响应时,会与您在网页上看到的有所不同。

  二、练习和练习前

  因为我很喜欢练习,所以我会一言不发地练习,练习会给你真正的知识,你多练习就会明白。

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

  实现环境:win32

  版本:python 3.6.2

  实用目标:获取万科百度百科历史版的历史修改时间,制作图表或csv文件

  三、流程说明

  和所有爬虫一样,我们的第一步会是分析网页,因为我们的目标选择的是动态网页,所以我们还需要跟踪json文件等等。

  过程:

  1、网页分析

  2、查询、跟踪json等文件或xhr

  3、 用于文本匹配

  4、绘制或制作 csv

  四、工具准备

  我们需要的库是(所有最新版本):

  1.请求

  2.回复

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

  3.matplotlib(用于可视化)

  4.datetime(准时运行)

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

  6.os(在系统上运行)

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

  你需要知道的:

  1.python 语法基础

  2.正则表达式匹配规则

  (爬行动物不需要以下内容)

  3.datetime 一些基本函数

  4.Matplotlib 可视化操作(虽然这对于非爬虫来说是必须的,但很多情况下数据可视化会让数据更直观,更容易做出判断)

  5.pandas库的基本使用(非爬虫必备,数据分析必备)

  五、网页分析

  首先我们打开我们的目标页面→万科百度百科历史版。

  好像一切正​​常,然后我们查看url,也有前面提到的规则,但是真的一切正常吗?

  如果你把这个页面做为静态页面,那肯定是注定要失败的,因为我从一开始就是这样做的,当你在第一页查找代码时,你会发现一切正常,但是当你在第二页查找代码时page 有时,您会发现一个事实,即您在第二页甚至最后一页上看到的最后一个代码是相同的。你觉得这有悖常理吗?

  六、关注

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

  此时很多人会选择使用fiddle等第三方软件抓包,比较方便,但是这里笔者比较难,所以直接在控制器平台上观看即可。

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

  很多网页的数据都会隐藏在json中。这可能是一样的吗?当然检查后失败了,然后我们看xhr,发现这个很熟悉的字段(当然我可能很熟悉)

  显而易见的答案就在这里,只需解释一下

  获取历史列表,获取历史数据

  我猜这个东西是万科的quantio语句(不知道这个词是不是拼错了,不过我用的很少,前后端工作的朋友可能知道)

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

  一看就知道是第七页

  大小显示 25 条消息

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

  七、假的

  作为爬虫,了解反爬虫套路是非常有必要的。如果你在xhr上进行正常爬虫,你会发现返回给你的是{error: xxxxx},此时你应该警惕,这证明你的机器人的身份被百度识破了,它拒绝了给你数据,所以我们需要做一些简单的伪装。前面已经讲过改头文件了,这次我会多讲。

  1.headers 伪装,服务器使用它来确定您正在使用的浏览器。当出现这种情况时,服务器会认为这是来自浏览器的正常请求。

  2.Referer:浏览器使用它来确定您从哪个网页跳转。

  3.ip伪装,这个只要构造好ip池就没有问题。

  4.cookie伪装,cookie被服务器用来识别你当前的状态,比如你是否已经登录等。每次你向服务器请求cookie时,都会相应更新。

  最常用的就是上面这些了,从上到下越来越难调整了。面对百度,光改headers显然是不够的,于是加了Referer和cookie码(关键是两个月前就建立了。IP池已经废掉了,懒得整)。

  好了,到这里我们发现可以正常获取数据了。

  八、文本匹配

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

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

  九、转换时间戳

  这时候我们就会发现,creattime给出的时间到底是什么鬼?

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

  python 中的时间戳:自 1/1/1970 12:00AM 以来的秒数

  是不是很破?

  幸运的是,解决这个问题只需要几段简短的代码

  输入时间戳,好了,问题解决了。

  十、绘图和csv

  图片

  CSV

  十个一、总结和代码

  感觉这次爬虫还行。两个多月后想起来也不容易。写这个博客纯粹是一个评论。至于怎么做图和怎么做csv的原因,我可以说博主是不是突然不想写了?

  这是代码:

  (注:博主懒得写评论了,不明白的可以评论提问,谢谢)

  ———————————————

  版权声明:本文为CSDN博主“独孤天”的原创文章,遵循C*敏*感*词*.0 BY-SA版权协议。转载请附上原文出处链接和本声明。

  原文链接:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线