2.3 请求链接并清洗数据:推荐使用方法二,即使用selenium模拟浏览器操作,避免请求头问题。2.4 自主选择方法一(使用requests)或方法二(使用selenium)。
【案例】python数据采集清洗分析中国审判流程信息公开网-采集篇
数据来源:中国审判流程信息公开网
小白的一点案例记录,望大神们手下留情。无完整源码,按模块操作未做整合。
一、背景前提
日常辛苦工作后,心血来潮想了解离职公司的最新情况。使用企业信息查询网站,完成一系列操作后,发现诉讼异常。因未成为会员,无法查看完整内容。由此,萌生了自己取数据、自行分析的念头。
二、准备工作
提醒:小心,爬虫操作可能导致IP封禁!使用Selenium模拟浏览器操作更真实。环境:win10、python3.7。工具:anaconda spyder、chrome driver。三方包:selenium、pandas、bs4、requests、random。
三、数据采集及清洗
分析网站结构,明确了关键点:首页搜索按钮需输入关键词,不同关键词搜索结果数量不一;搜索“0”出现的案例条数与首页下方案例点击后相加一致;列表页标题固定为class="fd-list-01";无直接进入详情页链接,详情页链接统一,通过文章类型和ID拼接;标题中onclick属性包含文章类型和ID;验证上述信息,准备数据采集。
1. 目录采集
提供源码示例,注意调试,非成品源码。
步骤简述:
1.1 实例化浏览器:使用.get()方法打开链接。
1.2 输入关键词:使用.send_keys()方法输入内容。
1.3 点击检索:使用.click()方法进行搜索。
1.4 切换窗口:通过driver.title查看标题、driver.refresh()刷新页面、driver.window_handles获取窗口句柄、.switch_to.window()切换窗口。
1.5 获取列表页数据:使用.get_attribute()获取页面属性,如类型和ID。
1.6 点击下一页:循环class为pageBtnWrap的a标签,判断title值,点击对应下一页。
1.7 列表页结束:遇到下一页点击失败或页面加载异常时,重新尝试。
数据存为列表,使用pandas将数据转换为数据框,确保字段完整,避免数据丢失。
2. 详情页采集
提供源码示例,基于列表页结果进行。
步骤简述:
2.1 读取列表页采集结果。
2.2 构造URL。
2.3 请求链接并清洗数据:推荐使用方法二,即使用selenium模拟浏览器操作,避免请求头问题。
2.4 自主选择方法一(使用requests)或方法二(使用selenium)。2024-11-21