我的个人信息:

本猿92年小生一枚,10级三流本科院校的软件工程专业,今年2013年10月份开始实习,说长不长说短不短的时间混迹在中小型互联网公司,主要从事的java研发工作。更确切一点的职责则是数据方面的实现。

总的来说,还没彻底离开母校魔爪的我,并没有算法界底层级预研大牛们那么深厚的内功,也没有摸爬滚打项目之上十多年狮子(工程师)们那么华丽的招式,但我是一个深爱互联网行业的coder,哪怕是留下一点点足迹,我也要坚持的在这条路上走下去。

我的个人愿望:

希望大神也好、大虾也罢,对数据抓取这一块有研究或有兴趣的人士,能够一起讨论共磋技术、工程、爱好。谢谢!

最近开始进行一些数据的抓取工作,记得不知哪位业内大牛曾经说过:只要是在网页上能看到的东西,都可以获取过来,只是难易程度的问题。

互联网就像是一张充满神秘的大网,无数的行业、无数的机遇、无数的用户、无数的信息(数据)……在其上翻滚、沉涌,它充斥着数不尽的财富,能带给人们的也是不可想象的多。

心生了一个想法,把自己近期对不同网站数据进行的抓取,也有接下来会分析并抓取的

网上数据进行整理归档,也许沉淀久了之后会是一片数据抓取之路,也能和大家进行讨教、讨论和分享。生命不休,学习不止!

零、数据抓取的背景信息:

北京交通管理官网:http://www.bjjtgl.gov.cn/publish/portal0/tab72/
左边列框处有“车辆违法查询”模块

测试数据:京(车牌号+发动机号)
这个貌似是隐私,不便透露。所以如果各位自己有车的人士,可以使用自己的数据进行测试。

一、分析要抓取的站点

想要使用程序实现自动化获取某个站点的数据,第一步要做的当然就是手动的分析这个站点结构,数据生成的步骤,还有限制自动化的手段等等对接下来的自动化实现有帮助的信息。知己知彼,方能百战不殆!

这里我个人推荐的是一定要掌握使用 Chrome(谷歌浏览器) 对网站进行分析,能够熟练使用这个工具不仅仅能获益其中数据抓取方式,更是对你在前端技术的了解,系统架构设计上都有一些不大不小的知识学习到。厚积薄发,才是王道!

首先,手动的走一遍正常的查询流程:




图1-主页查询窗口

在chrome浏览器下按下F12按钮,启动chrome内置开发者调试工具。
既可以看到该页面的一些信息,如html源代码、页面元素结构树、css样式分布等等。


图2-chrome开发者调试工具截图

言归正传,更多的chrome使用规则和详情,不是我们要讨论的重点,这些内容还得大家自己去掌握和经常使用才能熟练。如果有需要的话,以后也会写专门的博文来进行分享和讨论。

输入正确信息,点击“查询”按钮之后,
页面跳转到http://sslk.bjjtgl.gov.cn/jgjwwcx/wzcx/wzcx_preview.jsp这个地址。

图3-验证码输入页面

走到这里就可以很清晰的看到网页的限制自动化条件,大致流程也能揣摩到个一二了。
需要点击“点击获取验证码”按钮,才能看到验证码,并且验证码为难度较高的验证,多刷新几次发现都是关于车辆驾驶的题目。
(真是阴魂不散的“科目一”题型啊~~)O(∩_∩)O~

打开调试工具(F12),选择“NetWork”按钮,选择调试工具的网络请求监听模块,再次刷新页面,可以看到该次刷新或者说访问请求,你的浏览器所发出的URL请求信息。

左列框中有很多如jsp服务器脚本、css文本样式、js浏览器脚本、jpg(png)图片、多媒体等等文件的请求,点击第一个wzcx_preview.jsp,并选择右边的Header选项,既可以看到该次“主请求”所提交的信息。如图示:

图4-验证码页面分析图

对http请求稍微熟悉一点的人,就能很轻易的发现,这个验证码页面其实已经接收了前面我们填写的城市(sf)-11、车牌号(carno)-XXXXXX、机动车号(fdjh)-XXXXX。

所以可以判定的说,前面第一个表单页面根本就没有存在的必要性。进一步发现这个页面在点击“点击获取验证码”按钮的时候,“NetWork”左列框的最下方又有一个新的请求发出,即为获得验证码图片数据的请求。点击这个请求查看相关Header信息,发现请求头信息中包含了前面访问jsp页面所生成的cookie信息。并经过有效求证,该图片内置session中的验证码答案与当前这次访问的cookie值进行绑定,通过cookie中保存的值验证用户的验证码输入的正确性,然后才可以进行后面的操作。

图5-获取验证码的请求信息

有效的验证:个人猜想如果没有访问过jsp页面,而直接GET方式请求验证码会怎样,试验结果是YzmImg?t=XXXXX请求会在没有相应cookie的情况下response  set-cookie,也就是设置一个cookie,这也就证实了我刚刚前面的那个结论。

最终证实我的“该网站系统是对session中的验证码答案和用户访问会话的cookie进行绑定的。”的结论的事件是如下:
当我右键“YzmImg?t=XXXX”,选择“在新的标签页打开”时,也就只显示一张验证码图片,然后F12调试,不断刷新,发现验证码图像在不断变化,而cookie却没有变化,然后比如原jsp验证码输入页面 的验证码是“示”,现在我这个新开的标签页的验证码经过无数次的刷新后变为“通”,那么我在那个jsp页面输入“通”才是正确的。至始至终,服务器端session中记录的都是最新的一次这个cookie请求的验证码答案。

接下来,输入正确的验证码,点击查询,进入主页面,同理,F12调试页面,分析所发出的URL请求。

现在,接着分析最后一个信息主页面的请求情况,看下面的贴图可以很清晰的看出,最终是一个action请求,并附带了好多个各种分支请求,现在我们只看这个主请求"getWzcxXx.action"即可。


图6-最终信息展示页面的请求结构

图7-action请求的头信息

在Form Date一栏就能清晰的看到表单提交数据,以及Request Header的cookie设置参数。

大致的网站结构、请求逻辑也就基本上理清楚了,这最重要的一个步骤完成了之后,剩下的事情就非常好办了吧。
我使用的是java语言,采用httpclient jar包 或者 java.net的原生网络连接类 或者spring 的XXXTemplate类都可以!

文章末尾,如果大家有什么想抓取的网站,或是难分析、想分析的网站,都可以给我提,我会去看看。

本文地址:http://blog.csdn.net/limenglin0927/article/details/17539171
作者:疯子
如需转载,请注明出处!谢谢合作。

博客分享预告:下期分享 “如何获取QQ好友列表信息”。

数据抓取之(一):抓取北京交通管理网站的车辆违法信息(已完结)相关推荐

  1. 统计:抓虾热文的都是那些网站贡献的?

    统计:抓虾热文的都是那些网站贡献的? 信息时代的牛人,就是能处理大数据量的牛人,google 算一个, 抓虾也算一个. ---------------------- 截止小虾发稿时止,抓虾已经从 4, ...

  2. 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据

    Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...

  3. python 爬虫动态网页的区别_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取...

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  4. 抓包工具Fiddler抓取手机包和修改接口数据

    抓包工具Fiddler抓取手机包和修改接口数据 安装成功界面 点击Tools->Options 弹出该页面 Allow remote-勾选上,意思为允许远程计算机连接,端口随意设置(默认8888 ...

  5. Wireshark使用(捕获过滤器、显示过滤器、TCP交互抓包示例、抓取本地回环数据包等)

    1.捕获过滤器规则 1.1 作用   捕获过滤器在开始捕捉之前设置,用于从源头控制被过滤的包内容,仅符合规则的包会被捕获并记录进捕获日志文件. 1.2 语法规则 字段:[Protocol][Direc ...

  6. 四、小程序|App抓包(四)-Tcpdump抓取手机数据包分析

    小程序|App抓包(四) Tcpdump抓取手机数据包分析 一.环境需求: 1.手机需要root 2.电脑上安装SDK(建议安装android studio)也可单独安装SDk也行 下载地址 : ht ...

  7. python抓取交易所_python爬取上海石油天然气交易中心液化天然气交易数据并可视化分析...

    由于之前从事过石化行业,上海石油天然气交易中心成立虽较晚(2015年成立),但一直有关注,去年下半年由于大量供暖采取煤改气,还一个没有霾笼罩的冬天,因此出现了天然气大幅涨价供不应求的状况,闲着没事就用 ...

  8. 大数据之内衣的诱惑——抓取电商网站评论的秘密

    大数据之内衣的诱惑--抓取电商网站评论的秘密 前言 前段时间在知乎上看到有大神利用淘宝的评论信息,抓取购买内衣的型号和地域,分析出不同省份的女性身材指数分布.受之启发,我也动手研究了一下京东的评论信息 ...

  9. html 抓取移动,网页采集提取数据教程,以自定义抓取方式为例 - 八爪鱼采集器...

    网页上的数据类型十分丰富:文本.图片.链接.源码等.在数据采集过程中,不同类型的数据类型,对应的抓取方式是不同的.本文将讲解常见的数据类型与其抓取方式. 示例网址:https://movie.doub ...

最新文章

  1. 独创大学生答辩毕业设计系统
  2. 突破屏蔽限制,自己的网站使劲弹新IE窗口
  3. cnn识别cifar10、cifar100(pytorch)
  4. 《MacTalk•人生元编程》导读
  5. linux c代码出现段错误,在linux下代码运行出现段错误,求大神
  6. vue 2.0 无法编译ES6语法
  7. 三班的孩子们,你们现在还好吗?
  8. NGS基础 - 参考基因组和基因注释文件
  9. python对应的岗位_隐式相对导入如何在Python中工作?
  10. 国内外公共CDN静态资源网站大全
  11. OSI网络结构的七层模型与TCP/IP层次模型
  12. sql选择_SQL选择成
  13. WP8开发日志(3):MVC设计模式进阶——绑定多个数据集
  14. android alertdialog 自定义时间,Android自定义dialog可选择展示年月日时间选择栏
  15. 计算机联锁论文开题报告,学生论文开题报告评语
  16. cisco 2800路由器密码恢复
  17. eNSP配置Martini方式VPLS
  18. sqlserver连接池及查看连接数相关
  19. numpy数组的拼接(扩维拼接和非扩维拼接)
  20. 六边形3d立体缩放动画js特效

热门文章

  1. Red Hat Enterprise AS 4 上安装 Oracle 10G 手记
  2. vue弹出层效果(vux)
  3. 原油硫含量测定仪硫含量测定方法流程
  4. BBB板的HDMI接口注意事项
  5. NeurIPS 22: ASGC sgc扩展来解决异质图 DSSL Decoupled Self-supervised Learning
  6. [网络技术联盟站] 子网划分不会?瑞哥带你深入理解IP地址,手把手教你子网划分!
  7. python中feedparser用法(rss订阅获取正在上映的电影信息)
  8. 干翻Java_干翻Java!微软跨平台.NET Core 2.0版发布
  9. 民族瑰宝-台湾阿美族歌手-郭英男 介绍
  10. 机器人送丝软管型号和代码_国产焊接机器人的送丝系统可以三种不同的方式送丝...