获取弹窗文本_批量下载北大法宝的法律法规文本

2d8d0bb2390dab63f453140927075a26.png

引言

因项目需要,我计划从北大法宝下载一些法律法规文本,仅以此文记录我的心得体会。本文不会将项目涉及到的所有源代码都直接挂出来,只贴一些代码片段,聪明的你应该能够很轻松地把代码片段连成可用的完整脚本。

模拟登录

北大法宝的大部分功能都需要在登录状态下使用,我新注册的账号可以有7天的试用期,非常不错,美滋滋。如果老铁们愿意花点小钱的话,可以在某平台上买到一个可用的账号。

浏览器上的登录过程就不说了,只说一下python的模拟登录。

北大法宝的模拟登录非常简单,只要发送下面这个POST请求就可以了,可以看到用户名和密码都是以明文形式传递的。

23bfb7eb2e0bb7a19246f113489cc174.png
图中的用户名和密码是假的

使用requestsSession()发送这个POST请求,就可以让服务器记住登录状态了。

def login(self, username, password):
        '''
            登录北大法宝,需要提供用户名与密码
            :param username: 用户名
            :param password: 与用户名相对应的密码
            :return None: Session会自动保持登录状态
        '''
        # 登录网址
        url = "https://login.pkulaw.com/login"

        # 使用Session发送POST请求,登录北大法宝
        self.s.post(url=url, data = {
    "LoginName": username, "LoginPwd": password}, headers=self.headers)

浏览器中的批量下载

如果要下载某个主题的法律法规文本,显然,我们需要向服务器提供一个关键词。在浏览器中的操作是:在搜索框内输入你感兴趣的关键词,然后回车。

72de7b0d31a52376e5c3400b19abfea8.png
北大法宝的检索框

我以开发区为关键词,敲完回车以后,浏览器告知我,它检索到了482篇文本。如下图所示:

af49a122745226196e36382292b347f7.png
北大法宝检索到482篇文本,其中行政法规有91个

我们勾选上图中的全选框,然后点击批量下载,会出现下面的弹窗:

411ab0c37eb903c4089103b464bb7378.png

点击确定按钮以后,就下载了一个压缩包。有一个小问题是,这里虽然说是全选,但实际上只选了八份文件。因为当前页面就只放了八份文件,如下图所示:

85b48a427d63bfff42701169d427b92c.png
当前页面只有八份政策文本

不过还好,上图中有一个更多按钮可以点,点一下这个更多按钮,我们就能拿到更多的文本了。

c8670dc6d928742c70072137f0cfc121.png
点击更多按钮后选择一页显示100条

从图中能够看出,当前检索出来的内容是行政法规这个小类,除行政法规外,还有司法解释、部门规章、行业规定等。虽然当前页面显示的内容的范围变窄了,但是可以一次性下载100篇文本了,还是非常不错的。

如果只是简单地下载几百篇文本,手动下载挺好的,比脚本快得多。但如果下载的量比较多,这种机械性的重复难免会让人有些难受。下面来说说如何用脚本完成批量下载任务。

python实现批量下载

我们按照上面的流程一直走到点击确认按钮这一步,此时只要一点击这个确认按钮,浏览器就会下载压缩包。我们在点击确认按钮之前打开开发者工具,看看浏览器向服务器发送了什么请求,如果能够用脚本复现这个请求,不就能用python实现批量下载了嘛。

比较难受的是,点击完确认按钮以后,浏览器打开了一个新的窗口,下载任务创建完以后,它又自动关掉了。因为开发者工具只能捕获到当前标签页(或许是我不会设置),所以我们是看不到浏览器发送的请求。经百度,浏览器是可以设置成新窗口打开时,

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值