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参数。

爬取裁判文书网(一)相关推荐

  1. Python爬虫Selenium手动接管Edge爬取裁判文书网“环境污染”数据(Mac环境)

    目标数据:爬取从2007年到2022年,各地级市中级法院历年关于"环境污染"的裁判文书数量. 由于裁判文书网需要登录,Selenium手动接管爬取可避免频繁登录造成的封号风险. S ...

  2. 记录用web scraper爬取裁判文书网的文书列表信息以及批量下载word文书

    这个是一位网友在B站交流的一个问题,这里记录一下. 需求 1.爬取的网站地址:http://wenshu.court.gov.cn/website/wenshu/181217BMTKHNT2W0/in ...

  3. python 爬取裁判文书网

    19年4月版完整代码github地址:https://github.com/Monster2848/caipanwenshu 目标网站 发现这个请求中有返回数据 先带齐所有参数模拟浏览器发起一次请求 ...

  4. python爬取裁判文书并分析_裁判文书网爬虫攻克

    最近因为公司需要爬取裁判文书网的某一类别文章数据,于是简单研究了一下,发现网站数据全是js加载的,于是想都没想直接用selenium尝试爬取,没想到竟然有selenium都抓取不到的js(刚毕业的py ...

  5. Scrapy框架爬取中国裁判文书网案件数据

    Scrapy框架爬取中国裁判文书网案件数据 项目Github地址: https://github.com/Henryhaohao/Wenshu_Spider 中国裁判文书网 - http://wens ...

  6. 2021年10月最新使用selenium爬取裁判文书数据(本文仅供技术交流使用)

    作为一个java菜鸡,想了解一下python的爬虫,据说文书网反爬很厉害,遍去试试 好嘛 我去,啥啊,不讲武德 这个网站的特点首先符合了政府网站响应慢的特点,7百亿的访问量...,再加上时时刻刻的小机 ...

  7. 关于裁判文书网的一些建议

    关于裁判文书网的一些建议 有部分小伙伴私聊我一些文书网的东西.原因应该是我关于文书网批量下载的博文,写得太过简单.但我认为实现思路其实就这么简单,登录爬取,就没其他操作可言了.今天整理一下大概的问题. ...

  8. 爬虫修正:裁判文书网20200901更新增加登录系统

    爬虫修正:裁判文书网20200901更新增加登录系统 一.登录系统的增加 二.增加登录函数 三.一个比较纠结的地方 一.登录系统的增加 导致需要登录,直接是无法进入了.以往可以直接进入具体的类别如 现 ...

  9. python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫

    导语 前几篇文章介绍了爬取静态网站的主要方法.今天写一个小项目实践一下.本项目可以在终端窗口查询全国3400多个区县的当日天气信息和近七天天气信息. 实现效果 [Python爬虫]写一个爬取中国天气网 ...

最新文章

  1. Android底层开发之旅—蓝牙系统分析
  2. 自学python能学成吗-大家觉得自学python多久能学会?
  3. 伪指令 ENTRY 与 END
  4. mysql repair 索引_MySQ索引操作命令总结(创建、重建、查询和删除索引命令详解)...
  5. inputstream 占用内存吗_明明是8G的内存,系统却显示只有4G!为什么电脑这么吃内存?...
  6. C语言经典100道编程案例
  7. python批量png转ico
  8. 宝塔linux 解压文件,宝塔面板能否解压缩文件
  9. php计算ip掩码,php进行ip地址掩码运算处理的方法
  10. Mybatis框架与mysql数据库简单应用
  11. 用python做个聊天机器人与群发助手~再也不怕没时间回女友,闺蜜被胖揍了~
  12. 自学软件测试怎么学?【史上最详细学习路线】(附全套资料)
  13. C++实现模重复平方计算法
  14. Sass文件的导入import和Partials
  15. 参数传递是什么?参数传递的是什么?
  16. [BZOJ1296][SCOI2009]粉刷匠
  17. 题目:身份证录入系统 一、语言和环境 a)实现语言Java, 使用Android开发环境实现《身份证录入系统》APP。具体要求如下: 打开应用后,显示效果如图-1所示:
  18. vscode代码跳转快捷键
  19. 摄像头如何抓住你超速、压线、闯红灯?
  20. 论文阅读:XraySyn: Realistic View Synthesis From a Single Radiograph Through CT Priors

热门文章

  1. 只需5步——在轻量应用服务器部署Hexo博客
  2. eclipse中输入中文为繁体
  3. wps怎么转ppt wps转换成ppt的好方法
  4. 交通管理PDA手持机
  5. linux上同步日历的,Linux命令行上如何使用日历详解
  6. Gensim加载GloVe提供的词向量的诸多Bug之终极解决
  7. CCF 俄罗斯方块(满分代码 + 解题思路 + 技巧总结)201604 - 2
  8. 基于STM32(HAL库)的水质检测(浑浊度、PH值、温度、手机APP显示、wifi上云)
  9. 没什么经验的UE/UI设计师如何应对面试
  10. 愿有岁月可回首,更敬年少一杯酒