python 爬虫 裁判文书网 19年4月更新版

分享了一个GitHub项目,提供了裁判文书网2019年4月更新的数据爬取的完整代码。该爬虫实现了裁判文书网站的主体逻辑爬取。
摘要由CSDN通过智能技术生成

完整版代码github地址:https://github.com/Monster2848/caipanwenshu

在这里插入图片描述

爬虫主体逻辑:

import re
import time
import pymongo
import requests
import execjs
import threadpool
from wenshu_task.docid import getkey, decode_docid
from wenshu_task.my_logger import logger
from wenshu_task.redis_ip_pool import RedisPara
from wenshu_task.wenshu_method import ParseJs, ParseDetail, Para
from wenshu_task.wenshu_setting import ExceptionCollections, ThreadNum, MongoSetting

'''
文书网爬虫:http://wenshu.court.gov.cn/
'''

class NewWenshu(object):
    '''裁判文书网'''
    def __init__(self,page,case_type,get_ua, get_pr):
        self.ua = get_ua
        self.proxies = {'http': 'http://{}'.format(get_pr)}
        self.page = page
        self.case_type = case_type
        self.item = {}
        self.log = logger()
        self.data_count = 200
        self.order = "法院层级"
        self.direction = "asc"

    # 首页第一次
    def home_1(self):
        url = 'http://wenshu.court.gov.cn/'
        resp = requests.get(
            url=url,
            headers={
                "User-Agent": self.ua,
            },
            proxies=self.proxies,
            allow_redirects=False,
            timeout=20
        )

        html_js = resp.text
        try:
            dynamicurl = re.search('dynamicurl="(.*?)"', html_js).group(1)
            wzwsquestion = re.search('wzwsquestion="(.*?)"', html_js).group(1)
            wzwsfactor = re.search('wzwsfactor="(.*?)"', html_js).group(1)
            wzwsmethod = re.search('wzwsmethod="(.*?)"', html_js).group(1)
            wzwsparams = re.search('wzwsparams="(.*?)"', html_js).group(1)
        except:
            return None

        para_part = '''
        var dynamicurl="{}";var wzwsquestion="{}";var wzwsfactor="{}";var wzwsmethod="{}";var wzwsparams="{}";
        '''.format(dynamicurl,wzwsquestion,wzwsfactor,wzwsmethod,wzwsparams)

        with open('home_1.js','r',re.DOTALL) as f:
            js_code = f.read()
        js_code = para_part + js_code

        ctx = execjs.compile(js_code)
        wzwschallenge = ctx.call("wzwschallenge")

        next_url = 'http://wenshu.court.gov.cn' + dynamicurl + '?' + 'wzwschallenge=' + wzwschallenge
        wzws_cid = requests.utils.dict_from_cookiejar(resp.cookies).get("wzws_cid")
        return next_url,wzws_cid

    # 首页第二次
    def home_2(self):
        box = self.home_1()
        if not box:
            return None
        next_url, wzws_cid = box

        url = next_url
        resp = requests.get(
            url=url,
            headers={
                "User-Agent": self.ua,
            },
            proxies=self.proxies,
            allow_redirects=False,
            timeout=20,
            cookies ={
                "wzws_cid": wzws_cid
            }
        )
        next_wzws_cid = requests.utils.dict_from_cookiejar(resp.cookies).get("wzws_cid")
        return next_wzws_cid

    # 列表页第一次
    def list_1(self):
        box = self.home_2()
        if not box:
            return None
        next_wzws_cid = box

        url = "http://wenshu.court.gov.cn/List/List"
        resp = requests.get(
            url=url,
            headers={
                "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
              
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 39
    评论
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值