这个是一位网友在B站交流的一个问题,这里记录一下。

需求

1、爬取的网站地址:http://wenshu.court.gov.cn/website/wenshu/181217BMTKHNT2W0/index.html?pageId=7bcf3b0574e320a487ada1f504759be4&s21=%E8%B5%94%E5%81%BF

2、需要抓取的信息

爬取文书列表内容,报告标题、文号、日期、摘要等等信息。

3、需要抓取多页,比如说前10页。

分析网站的情况

1、抓取的页面翻页的时候,url是不会变的。而在页面的源码当中又找不到内容,说明网页是通过异步加载的。

2、打开F12,就会弹出下面的暂停提示,阻止后续的查看。没事,点击右下角的取消断点,再运行即可。

3、点击“network”,点击网页的第二页,查看请求的数据。

可以看到,是post请求,后面需要有一堆的参数

一般而言,通过这样请求之后,可以获取到真实的json文件,里面就包含了网页中文书的列表当中,然而这次却是不一样,请求得到的居然是加密的信息,还需要通过一定方式来进行解密才行。

到这里,已经可以感受到网页开发人员的“苦心”,反爬的措施可谓是非常的多。不过,我还是在网上找到了一篇网友关于用python解决这上面问题的办法和代码,有需要的时候可以参考一下。这里有些内容在自己的能力圈之外,就暂时不考虑了。

https://blog.csdn.net/Since_you/article/details/100566633

web scraper爬取

用python比较复杂的话,那么就考虑用web scraper来试试。

python爬取的效率当然高,但是反爬的太厉害了,大部分的网站都会对python进行一定的限制和爬取,这样写代码的成本就无形增加了很多。

web scraper则不用考虑这么多,只要浏览器里面能看到数据,就能够进行爬取。

回头看看网站的情况:一是url不变,二是数据不在网页源码当中。那么就考虑“动态加载进行翻页”的这种情况(参考教程:http://www.yhjbox.com/2020/03/5561/)。

主要配置如图:

关键点就是"selector type"和"click selector"的配置

“selector type”(用于选择网页中的文书列表)选择"Element click"
“click selector”(用于翻页)这里需要注意,一般如果是直接在网页点选的话,得到的css代码是这样的

.left_7_3 a:nth-of-type(n+2)

表示的意思就是从第二个翻页器(上一页为第一个,1为第二个)开始点击,一直到最后一个。

因为这个url有非常多的页,比如,如果希望只取前5页的话,可以如下更改:

.left_7_3 a:nth-of-type(-n+6)

n的取值是从0开始的。

然后再在这个选择器下面,配置标题、文号、日期、摘要的选择器。

最终的结构图就是这样的:

爬取的过程及结果就是这样的。

这个方法相对python而言,节省的时间可不止一点点,结果基本上一致。

这里把上面的web scraper的配置也分享一下:

{"_id":"caipan","startUrl":["http://wenshu.court.gov.cn/website/wenshu/181217BMTKHNT2W0/index.html?pageId=7bcf3b0574e320a487ada1f504759be4&s21=%E8%B5%94%E5%81%BF"],"selectors":[{"id":"list","type":"SelectorElementClick","parentSelectors":["_root"],"selector":"div.LM_list:nth-of-type(n+3)","multiple":true,"delay":0,"clickElementSelector":".left_7_3 a:nth-of-type(-n+4)","clickType":"clickOnce","discardInitialElements":"do-not-discard","clickElementUniquenessType":"uniqueText"},{"id":"title","type":"SelectorLink","parentSelectors":["list"],"selector":"a.caseName","multiple":false,"delay":0},{"id":"number","type":"SelectorText","parentSelectors":["list"],"selector":"span.ah","multiple":false,"regex":"","delay":0},{"id":"date","type":"SelectorText","parentSelectors":["list"],"selector":"span.cprq","multiple":false,"regex":"","delay":0},{"id":"content","type":"SelectorText","parentSelectors":["list"],"selector":"p","multiple":false,"regex":"","delay":0}]}

批量下载word文书

每个文书都提供有word下载的链接,但是实现批量下载还是有一点困难。

1、word的下载链接直接在按钮或者网页源码里面是提取不到的,是需要根据文书的url中的"docId"参数来构造的,即

“http://wenshu.court.gov.cn/down/one?” + docID地址

例如:

爬取到的文书的详细页地址为:

http://wenshu.court.gov.cn/website/wenshu/181107ANFZ0BXSK4/index.html?docId=f9ffb134f0cb4a2ab832abea01298704

那么下载地址就是:

http://wenshu.court.gov.cn/down/one?docId=f9ffb134f0cb4a2ab832abea01298704

2、有了这个地址之后,原本以为可以直接用迅雷、IDM等软件来批量下载,但是很显然,网站的开发人员限制了。经过不同方法的验证,发现目前只能是通过浏览器来挨个下载。(另外,可能可以通过python设置各种反爬的方法来实现批量下载的目的,但是工程量比较大,我没试验成功,理论上应该是可的。)

那么就用了最笨的方法,借助python来模拟鼠标键盘的操作,将url批量的输入到浏览器当中,实现批量下载。

下面是单次下载的代码,批量的话只需要读取web scraper爬取的文件,构造好url,通过一个循环,依次输入下载即可。


import time
import pyautoguitime.sleep(1)
url_position = (160, 50) #url位置def input_id(x,y,url): #输入url的动作pyautogui.moveTo(x, y, duration=0.2)  #0.25表示完成移动的时间          pyautogui.click(button='left')time.sleep(0.5)pyautogui.typewrite(url,0.01)#输入字符,0.1表示输入每个字符间隔的时间time.sleep(0.5)pyautogui.press("enter")url1 = "http://wenshu.court.gov.cn/down/one?docId=694b012a59e34ae19967abeb00d512dc"input_id(url_position[0],url_position[1],url1)

小结:
1、python固然很强大,但是有时候用web scraper可以效率更高,节省更多的时间。

2、web scraper爬取url不变、异步加载的网页,关键是"selector type"和"click selector"的配置,可以参考教程:http://www.yhjbox.com/2020/03/5561/

3、python可以通过pyautogui库,来实现自动化操作任意鼠标、键盘的操作。

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

  1. Web Scraper爬取信息

    前期条件:安装web scraper插件: 安装好之后,打开网页调试模式,F12 会看到多出来Web Scraper: 实践: 以豆瓣网为例: 爬取租房信息: Type有很多类型: 这里选择是表格,需 ...

  2. 使用BeautifulSoap爬取安智网的所有应用信息

    开发工具: python版本:python2.7 开发工具:Eclipse 开发需求: 1.爬取安智网下的app应用信息:应用分类.应用名称.下载次数.上线时间.包大小.支持系统版本.资费.作者.软件 ...

  3. Python 小项目 01 爬虫项目 爬取链家网南京地区二手房信息

    SpiderLianjia 介绍 python爬虫小程序,爬取链家网南京地区普通住宅二手房数据. 代码下载: https://gitee.com/lihaogn/SpiderLianjia 1 程序设 ...

  4. web scraper 爬取微博粉丝性别以及微博内容

    一.粉丝性别 两个地方要注意: 1. 翻页,由于查看粉丝数限制,如果一直点下一页,会卡在第5页或者第10页,最后数据无法保存.所以还是在url里写上页数范围,这样最后数据可以保存:比如第一页网址:是  ...

  5. 网络爬虫之scrapy爬取某招聘网手机APP发布信息

    1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP岗位 ...

  6. scrapy爬取某招聘网手机APP发布信息

    1 引言 ​ 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP ...

  7. 爬取今日头条收藏夹文章列表信息

    阶段一: 了解Python,开始学习Python的基本语法,观看相关爬虫视频,了解到爬取网页信息的简单措施 阶段二: 开始着手分析头条收藏夹页面. 头条收藏夹地址格式: 地址中有三个变量参数,as,c ...

  8. Python爬取链家网24685个租房信息并进行数据分析

    2020年注定是一个不平凡的年份,很多行业受疫情影响艰难前行,即便复产复工提速,被抑制的需求也难以短期释放.与此同时,地摊经济孕育而生,如果人们真的都去摆地摊了,是不是也会出现睡地摊的普遍现象?这时候 ...

  9. 爬取猫眼电影网经典电影TOP100信息Markdown效果展示

    No:1 霸王别姬 主演:张国荣,张丰毅,巩俐 上映时间:1993-01-01(中国香港) 评分:9.6 了解更多- No:2 肖申克的救赎 主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿 上映时间:1 ...

最新文章

  1. Linux 命令 查看监听端口
  2. 【Matlab 控制】利用 Simulink 对微分代数方程建模
  3. 【知识星球】重要小结与涨价预告
  4. SQL Server 自定义快捷键
  5. 4.4. Config file
  6. QML基础类型之variant
  7. 书籍《智能交通》-观后感-2021年12月-下期分享
  8. 字体大小 js 控制
  9. 自动驾驶论文解析(7)
  10. python状态码及其含义_Shell退出状态码及其应用详解
  11. python散点图拟合曲线如何求拟合_python 拟合曲线并求参
  12. 没有顶会的 CV/NLP 方向的博士生毕业出路在哪里?
  13. CodeForces 2B The least round way
  14. Atitit 面试问题高难度问题 回答不上来的分析应对法 目录 1. 问题分析法 1 1.1. 判断是否超出自己范围的,直接回复超出自己范围了 1 1.2. 根据生活中的解决方法,大概说下解决模式
  15. 扫描微信小程序体验版二维码无法打开
  16. Ubuntu12.04软件安装指南
  17. python 乌龟绘图turtle模块的使用
  18. 用U盘制作win7系统安装盘
  19. 修改计算机参数,缺氧参数怎么修改 游戏内参数修改方法解答
  20. 【学习笔记】《基于φ-OTDR的分布式扰动传感系统定位算法研究-北交-通信与信息系统-吴》重点笔记

热门文章

  1. PO, AP, GL Open/Closed Period Action
  2. java基础笔记05~汪汪汪~
  3. 洛谷 #2357. 守墓人
  4. 解决IAR软件生成的HEX文件用记事本打开出现乱码
  5. 添加背景,如何把一个视频插入到另一个视频中
  6. 阿里云和腾讯云免费SSL证书 专题
  7. 电脑无法打开计算机的策略对象,win10系统提示“无法打开此计算机上的组策略对象”的解决方法...
  8. 虚拟机Win 7中重新 划分 分区 合并 磁盘
  9. pmp考试24计 | 第十三计-计清:首先和首要
  10. 蓝屏stop:0x000000007B (oxf78aa524,Oxcooooo34