爬取裁判文书网(一)
1、裁判文书网地址
http://wenshu.court.gov.cn/
2、网站分析
(1)网站类型是动态网站。
(2)网页源代码中并没有我们想要的页面内容,且引用许多js代码。
(3)查看列表页是否有专门的json接口。
(4)通过开发者工具查看network,发现了一个json接口。即ListContent。
(5)通过研究json接口,发现它是一个post请求。
(6)发现是post请求,我们继续寻找其对应post请求提交的参数。
(7)通过分析,Param是我们输入的关键字斗鱼,index为页号,page为一页返回的文书数量,Order为法院层级,Direction为排序(asc为升序),推测这5个为固定参数,剩下3个参数vl5x,number,guid。多次切换页面以及切换关键词后发现number可以算作一个固定参数,只是不同的关键词对应的number不同,暂时假定它为固定参数。此时剩下vl5x和guid这两个参数,我们需要分析出这两个参数的来源,以及参数值是怎么设置的?
(8)根据经验,一般参数来源如下:
(1)、某一个url,它的响应头(Response Headers)内的Set-Cookie字段中,可能会含有一些参数。值得注意的是,需先将网站的cookie数据从浏览器内全部清空,因为cookie有过期时间,如果cookie没有过期之前,服务器是不会将cookie放在Set-Cookie中的。
(2)、从json接口返回的数据中,可能含有后续请求的参数,尤其是翻页参数很常见。
(3)、js加密得到的参数。
- ①简单的js加密,我们可以直接使用python语言将其还原。
- ②在python中执行js代码,execjs(windows下,需安装PyExecJS)直接调用js文件里的函数。
- ③ 异常复杂的js代码,可以考虑app端的信息提取。
(9)根据上述思路,开始寻找vl5x之路。
①、首先在network中寻找, 发现
http://wenshu.court.gov.cn/list/list/?sorttype=1&number=GCWPXLXZ&guid=4f5da0e5-6c27-f6e61ddd-fdd62ebd9b48&conditions=searchWord+QWJS+++全文检索:斗鱼
这个地址中,其响应头Set-Cookie:vjkl5=a045279669aff35f6fb01cc18db8938dbea7b899。并不是我们想要寻找的vl5x。
②、其次,查看我们之前从第(4)步里找到的json接口,查看其内容是否含有这些参数。将json响应的内容复制后进行json解析(网址为:https://www.json.cn/),发现并没有这些参数。
③、此时,以上两步都没有发现vl5x和guid这两个参数。那么我们考虑去js文件中查找这些参数。选中js类型,在filter处输入vl5x进行全局搜索。
④此时发现了vl5x存在于Lawyee.CPWSW.JsTree.js文件中。
⑤点击进入查看,发现了vl5x是通过getKey()函数加密的 ,guid是通过guid1加密的。
⑥按照第4步的方法,继续全局搜索getKey()函数。点击进入查看。
⑦进去这个函数后,发现getKey()函数是加密过的。
⑧那么我们得将其还原为加密前的函数。选中一个eval函数。复制后放到console中,去掉eval后运行,得到如下结果。
⑨将getKey()函数中的所有eval加密后的内容处理完成后,我们将其放到一个文件中。观察发现:
⑩此时我们发现,从第①步获取到的vjkl5此时派上了用场。那么我们注释掉其中的var cookie = getCookie(‘vjkl5’);把vjkl5作为一个参数传递给getKey()函数。
⑪那么vl5x有了,只剩下guid的值了。回到第6步,我们发现guid的值:guid=772785a4-40d0-2fbfa255-e60616a6de83,其加密方法时guid1,这种格式让我们想到python中内置的uuid模块。其uuid1的加密方法似乎和guid的值得是一样的。
那我们来验证下。
⑦现在对比uuid1的值和guid的值。发现他们大同小异。假设他们一样,那么所有参数破解完后,我们开始实现代码。
uuid1=ab238e30-bcc6-11e8-bc4f-d8cb8a518959
guid =772785a4-40d0-2fbfa255-e60616a6de83
3、代码实现
1、温馨提示
(1)、此处假设你已经懂得scrapy的基础知识,并能够做一些基本的代码编写,那么请往下走。
2、创建项目
(1)通过scrapy相关命令创建项目,同时在项目的根目录下新建一个debug.py文件,写入相关命令,以便调试。
(2)、配置settings.py文件,设置robots协议以及浏览器标识等。
(3)、万事具备,只欠东风。开始编写spider下的爬虫文件内容。打断点使用debug进行调试,看能否成功输出vlx5。
(4)此时debug调试运行,发现报了一个错误。Base64未定义。那就是说我们的ws.js文件中缺少这个函数。寻找这个js函数,并将其放入我们的ws.js文件中,想到ws.js文件中还有hex_md5加密的函数,将md5.js文件中的内容也复制进去。
(5)再次调试,发现成功获取到vlx5这个参数。
(6)一路向西,继续编写代码。并开始构建post请求的参数。debug调试运行,发现成功构造整个post请求的参数。
(7)开始发送post请求。值得一提的是,由于在请求列表页接口时,cookie中的vjkl5的值每次都是变化的,所以在请求时,需要将从response的Set-Cookie中获取的vjkl5的值更换一下,否则使用同一个vjkl5的值,会出现’remind key’错误。
(8)继续编写代码,并调试输出查看。对比查看获取的是我们想要的数据。
(9)那么下一步就是获取每一个标题页的详情信息了。通过抓包发现了请求每一个标题页详情的网址,是个get请求。但同时它携带了一个DocID参数。
爬取裁判文书网(一)相关推荐
- Python爬虫Selenium手动接管Edge爬取裁判文书网“环境污染”数据(Mac环境)
目标数据:爬取从2007年到2022年,各地级市中级法院历年关于"环境污染"的裁判文书数量. 由于裁判文书网需要登录,Selenium手动接管爬取可避免频繁登录造成的封号风险. S ...
- 记录用web scraper爬取裁判文书网的文书列表信息以及批量下载word文书
这个是一位网友在B站交流的一个问题,这里记录一下. 需求 1.爬取的网站地址:http://wenshu.court.gov.cn/website/wenshu/181217BMTKHNT2W0/in ...
- python 爬取裁判文书网
19年4月版完整代码github地址:https://github.com/Monster2848/caipanwenshu 目标网站 发现这个请求中有返回数据 先带齐所有参数模拟浏览器发起一次请求 ...
- python爬取裁判文书并分析_裁判文书网爬虫攻克
最近因为公司需要爬取裁判文书网的某一类别文章数据,于是简单研究了一下,发现网站数据全是js加载的,于是想都没想直接用selenium尝试爬取,没想到竟然有selenium都抓取不到的js(刚毕业的py ...
- Scrapy框架爬取中国裁判文书网案件数据
Scrapy框架爬取中国裁判文书网案件数据 项目Github地址: https://github.com/Henryhaohao/Wenshu_Spider 中国裁判文书网 - http://wens ...
- 2021年10月最新使用selenium爬取裁判文书数据(本文仅供技术交流使用)
作为一个java菜鸡,想了解一下python的爬虫,据说文书网反爬很厉害,遍去试试 好嘛 我去,啥啊,不讲武德 这个网站的特点首先符合了政府网站响应慢的特点,7百亿的访问量...,再加上时时刻刻的小机 ...
- 关于裁判文书网的一些建议
关于裁判文书网的一些建议 有部分小伙伴私聊我一些文书网的东西.原因应该是我关于文书网批量下载的博文,写得太过简单.但我认为实现思路其实就这么简单,登录爬取,就没其他操作可言了.今天整理一下大概的问题. ...
- 爬虫修正:裁判文书网20200901更新增加登录系统
爬虫修正:裁判文书网20200901更新增加登录系统 一.登录系统的增加 二.增加登录函数 三.一个比较纠结的地方 一.登录系统的增加 导致需要登录,直接是无法进入了.以往可以直接进入具体的类别如 现 ...
- python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫
导语 前几篇文章介绍了爬取静态网站的主要方法.今天写一个小项目实践一下.本项目可以在终端窗口查询全国3400多个区县的当日天气信息和近七天天气信息. 实现效果 [Python爬虫]写一个爬取中国天气网 ...
最新文章
- Android底层开发之旅—蓝牙系统分析
- 自学python能学成吗-大家觉得自学python多久能学会?
- 伪指令 ENTRY 与 END
- mysql repair 索引_MySQ索引操作命令总结(创建、重建、查询和删除索引命令详解)...
- inputstream 占用内存吗_明明是8G的内存,系统却显示只有4G!为什么电脑这么吃内存?...
- C语言经典100道编程案例
- python批量png转ico
- 宝塔linux 解压文件,宝塔面板能否解压缩文件
- php计算ip掩码,php进行ip地址掩码运算处理的方法
- Mybatis框架与mysql数据库简单应用
- 用python做个聊天机器人与群发助手~再也不怕没时间回女友,闺蜜被胖揍了~
- 自学软件测试怎么学?【史上最详细学习路线】(附全套资料)
- C++实现模重复平方计算法
- Sass文件的导入import和Partials
- 参数传递是什么?参数传递的是什么?
- [BZOJ1296][SCOI2009]粉刷匠
- 题目:身份证录入系统 一、语言和环境 a)实现语言Java, 使用Android开发环境实现《身份证录入系统》APP。具体要求如下: 打开应用后,显示效果如图-1所示:
- vscode代码跳转快捷键
- 摄像头如何抓住你超速、压线、闯红灯?
- 论文阅读:XraySyn: Realistic View Synthesis From a Single Radiograph Through CT Priors