Python中如何爬取裁判文书网的搜索信息,有没有现成的轮子呢?
http://wenshu.court.gov.cn/ 想爬取搜索结果的统计信息,比如,搜索一个关键词,抓取左侧的年份,地域,案由筛选等等信息。 看了一些资料,反扒措施貌似很多,这样的需求应该不至于触发反扒措施吧
Python中如何爬取裁判文书网的搜索信息,有没有现成的轮子呢?
7 回复
https://www.google.com/search?q=%E8%A3%81%E5%88%A4%E6%96%87%E4%B9%A6%E7%BD%91%20%E5%8F%8D%E7%88%AC
第一个和第二个已经很清楚了
import requests
import json
from typing import Dict, List, Optional
import time
class WenshuCrawler:
"""
裁判文书网搜索信息爬取基础示例
注意:实际使用需处理反爬机制(验证码、动态token等)
"""
def __init__(self):
self.session = requests.Session()
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': 'https://wenshu.court.gov.cn/'
}
def get_search_results(self, keyword: str, page: int = 1) -> Optional[Dict]:
"""
搜索裁判文书
:param keyword: 搜索关键词
:param page: 页码
:return: 搜索结果字典
"""
# 实际URL和参数需要分析网站接口
url = "https://wenshu.court.gov.cn/website/parse/rest.q4w"
# 需要动态获取的参数(示例结构)
params = {
"page": page,
"sortOrder": "",
"param": json.dumps({
"searchWord": keyword,
"pageSize": 20,
"sortFields": ""
}, ensure_ascii=False)
}
try:
# 实际需要添加cookies、token等认证信息
response = self.session.post(
url,
data=params,
headers=self.headers,
timeout=10
)
response.raise_for_status()
# 解析返回数据(实际结构需分析)
data = response.json()
return self._parse_results(data)
except Exception as e:
print(f"请求失败: {e}")
return None
def _parse_results(self, raw_data: Dict) -> Dict:
"""解析返回数据"""
results = {
'total': raw_data.get('totalCount', 0),
'cases': []
}
# 解析文书列表(字段名需根据实际响应调整)
for item in raw_data.get('result', []):
case = {
'case_id': item.get('案件ID'),
'title': item.get('案件名称'),
'court': item.get('法院'),
'date': item.get('裁判日期'),
'case_type': item.get('案件类型'),
'url': f"https://wenshu.court.gov.cn/website/wenshu/{item.get('文书ID')}"
}
results['cases'].append(case)
return results
# 使用示例
if __name__ == "__main__":
crawler = WenshuCrawler()
# 搜索测试
results = crawler.get_search_results("民间借贷", page=1)
if results:
print(f"找到 {results['total']} 个结果")
for i, case in enumerate(results['cases'][:3], 1):
print(f"{i}. {case['title']}")
print(f" 法院:{case['court']}")
print(f" 日期:{case['date']}")
print(f" 链接:{case['url']}\n")
关于现成轮子:
- 开源项目:GitHub上有一些相关项目,但大多已失效(网站改版/反爬升级)
- 主要难点:
- 动态加密参数(_VIEWSTATE、token等)
- 验证码识别(点选、滑块等)
- 请求频率限制和IP封禁
- 建议方案:
- 使用Selenium/Puppeteer模拟浏览器操作
- 接入打码平台处理验证码
- 合理设置延迟和代理池
总结:直接爬比较困难,建议先研究网站接口规律。
非常感谢哈。
有没有简单成型的,目前不需要爬下文档,只要个搜索之后的左边的统计信息就好了
github 上有很多写好的爬虫,试试能不能用?
ok,话说,如果爬上面的文档,用什么数据库存储比较好?
个人爬,量不多就一个表,就 mysql 呗。
用别人的代码,那就看代码用的是哪个库就用那个
python/scrapy
文件或者上数据库

