抓取网页数据违法吗(北京交通管理培训机构--生命不休狮子(工程师))
优采云 发布时间: 2022-02-20 01:16抓取网页数据违法吗(北京交通管理培训机构--生命不休狮子(工程师))
我的个人信息:
这只猿猴是一名92岁的学生,在一所十级三流本科院校软件工程专业。他于今年 2013 年 10 月开始实习。长期在中小型互联网公司工作,主要从事java研发。. 更精确的责任是数据的实施。
总的来说,我这个还没有完全脱离母校魔掌的人,没有算法行业底层预研大师的深厚内功,也没有曾经的华丽狮子(工程师)从事项目工作十余年。搬家,但我是一个热爱互联网行业的码农。即使留下一点足迹,我也会在这条路上坚持下去。
我个人的愿望:
希望对数据采集有研究或兴趣的人,无论是大神还是大虾,都可以一起讨论技术、工程和爱好。谢谢!
最近开始做一些数据爬取工作。记得不知道哪位行业大佬曾经说过:只要你能在网上看到任何东西,你就能得到它,只是难度问题。
互联网就像一张充满神秘色彩的大网,有着无数的行业、无数的机会、无数的用户、无数的信息(数据)……在上面翻滚涌动,充满了无数的财富,有能力给人们带来的是难以想象。
心里有个想法,最近抓到了不同的网站数据,接下来分析抓拍。
在线数据被组织和归档。或许经过长时间的沉淀,会是一条数据采集之路,也可以传授、讨论、分享给大家。人生无止境,学无止境!
零、数据抓取的背景资料:
北京交通管理官网:
左侧栏框内有“车辆非法查询”模块
测试数据:北京(车牌号+发动机号)
这似乎是私人的,不方便透露。因此,如果您有自己的汽车,则可以使用自己的数据进行测试。
一、分析要爬取的站点
如果要使用程序自动获取某个站点的数据,第一步当然是手动分析站点结构、数据生成的步骤、限制自动化的手段等。下一个自动化实施。知己知彼,百战百胜!
这里我个人推荐的是掌握Chrome(谷歌浏览器)的使用来分析网站。能够熟练地使用这个工具,不仅会让你受益于数据捕获的方法,也会让你对前端技术的理解受益。, 系统架构设计有一些小知识要学。积累才是王道!
首先,手动走一遍正常的查询流程:
图 1 - 首页查询窗口
在chrome浏览器中按F12键启动chrome内置的开发者调试工具。
可以看到页面的一些信息,比如HTML源码、页面元素结构树、CSS样式分布等等。
图2 - chrome开发者调试工具截图
言归正传,更多chrome的使用规则和细节不是我们讨论的重点。这些内容必须掌握并经常使用才能精通。如有需要,我会专门写一篇博文,供日后分享和讨论。
输入正确信息后点击“查询”按钮,
页面跳转到这个地址。
图 3 - 验证码输入页面
来到这里,可以清楚的看到网页自动化有限的情况,大致的流程也能猜一二。
需要点击“点击获取验证码”按钮才能看到验证码,验证码是难度验证。刷新了几次,发现全是车辆驾驶。
(真的是困扰我的“主题一”题型~~)O(∩_∩)O~
打开调试工具(F12),选择“网络”按钮,选择调试工具的网络请求监控模块,再次刷新页面,可以看到刷新或者访问请求,你发送的URL请求浏览器信息。
左边栏框里面有很多jsp服务器脚本、css文本样式、js浏览器脚本、jpg(png)图片、多媒体等文件的请求,点击第一个wzcx_preview.jsp,选择上面的Header选项对,您可以查看为此“主要请求”提交的信息。如图所示:
图 4 - 验证码页面分析
稍微熟悉http请求的人很容易发现,这个验证码页面其实已经收到了我们之前填写的城市(sf)-11、车牌号(carno)-XXXXXX,*敏*感*词*号。(fdjh)-XXXXX。
因此可以判断第一个表单页面根本不需要存在。进一步发现,当在该页面点击“点击获取验证码”按钮时,在“网络”左栏下方发送了一个新的请求,即获取验证码图片数据的请求。点击这个请求查看相关头信息,发现请求头信息中收录了之前访问jsp页面产生的cookie信息。并且经过有效验证后,将图片内置session中的验证码答案与当前访问的cookie值绑定,通过cookie中保存的值验证用户输入验证码的正确性,然后可以进行以下操作。
图 5 - 获取验证码的请求信息
(有效验证:我个人猜测如果没有访问JSP页面,直接通过GET方式请求验证码会怎样。测试结果是YzmImg?t=XXXXX请求会响应set-cookie,没有对应的cookie ,也就是设置一个cookie,这也印证了我刚才做出的结论。)
事件最终证实了我的结论“网站系统是绑定会话中的验证码答案和用户访问会话的cookie”。结论如下:
当我右击“YzmImg?t=XXXX”,选择“在新选项卡中打开”时,只显示一张验证码图片,然后F12调试不断刷新。我发现验证码图片在不断变化,但是cookie没有变化,那么比如原来jsp验证码输入页面的验证码是“show”,现在我新打开的tab的验证码页面在无数次刷新后变为“通过”,然后我输入“在那个jsp页面上”通过“是正确的。从头到尾,服务器端会话记录了这个cookie请求的最新验证码答案。
接下来输入正确的验证码,点击查询,进入主页面。同样,F12 调试页面分析发送的 URL 请求。
现在,我们来分析最后一个主页信息的请求。看下面的图,我们可以清楚的看到,它到底是一个action request,附带了很多各种各样的分支请求。现在我们只看这个主请求“getWzcxXx.action”会做。
图 6 - 最终信息展示页面的请求结构
图 7 - 动作请求的头部信息
在Form Date一栏中,可以清晰的看到表单提交数据和Request Header的cookie设置参数。
大致的网站结构和请求逻辑基本搞清楚了。这个最重要的步骤完成后,剩下的就很容易处理了。
我用的是java语言,使用httpclient jar包或者原生网络连接类或者spring的XXXTemplate类都可以!
文章最后如果你有什么网站想抓拍,或者网站很难分析或者想分析的可以提给我,我会看一看。