找回密码
 会员注册
查看: 17|回复: 0

利用Python中selenium库爬虫实现中国裁判文书网自动登录批量下载功能——最新版详细教程!!———已更新高级检索功能

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
67462
发表于 2024-9-10 23:16:28 | 显示全部楼层 |阅读模式
目录工具准备Chrome浏览器ChromeDriver驱动什么是ChromeDriver下载安装首先,需要检查Chrome浏览器的版本。请按照以下步骤进行:请记下这个版本号,因为需要确保下载与Chrome浏览器版本相匹配的ChromeDriver实现细节ChromeDriver下载完成后解压缩,打开环境变量配置这一步非常关键!!Python库安装完整代码运行时下载自定义高级检索工具准备Chrome浏览器如果电脑上没有chrome浏览器或者当前chrome浏览器不是最新版,请先去chrome官网下载安装最新版chrome浏览器https://www.google.cn/chrome/index.htmlChromeDriver驱动什么是ChromeDriverChromeDriver是一种用于自动化和控制GoogleChrome浏览器的工具。它是一个开源的项目,由Google维护,并提供给开发者使用。ChromeDriver充当一个桥梁,允许自动化测试工具或脚本与Chrome浏览器进行交互。具体来说,ChromeDriver通过与Chrome浏览器通信,执行各种操作,如打开网页、模拟用户输入、获取页面元素等。这对于自动化测试、网页抓取、自动化任务等场景非常有用。一般来说,如果你想使用Selenium(一个用于自动化测试的工具)来自动化Chrome浏览器,你需要下载并配置ChromeDriver。Selenium将通过ChromeDriver与Chrome浏览器进行通信,从而实现自动化测试脚本的执行。下载安装首先,需要检查Chrome浏览器的版本。请按照以下步骤进行:打开Chrome浏览器后,如下图所示进行操作然后就可以看到我们Chrome浏览器的版本了:注意:如果你的Chrome浏览器是最新版,一般就不用看了,ChromeDriver也安装最新版即可!!请记下这个版本号,因为需要确保下载与Chrome浏览器版本相匹配的ChromeDriver相同版本号只需第一位数字相同即可,比如Chrome版本号是122.0.6261.129,所以ChromeDriver下载版本号122开头的即可ChromeDriver最新版本链接:https://googlechromelabs.github.io/chrome-for-testing/打开链接后如下图所示:按照自己电脑的系统选择url进行下载(像我是windows系统,电脑64位的下载win64就行)实现细节ChromeDriver下载完成后解压缩,打开我们需要把chromedriver.exe文件复制到chrome的安装路径如果不记得自己Chrome的安装路径的话,就找到Chrome浏览器的快捷方式,右键->打开文件所在的位置如果此时显示的位置Chrome仍是快捷方式不是chrome.exe的话,继续执行右键->打开文件所在的位置然后找到了chrome安装位置,将chromedriver.exe拷贝进来,如下图4.完成复制后,不要急着关闭文件夹,复制一下当前文件路径,也就是chrome.exe的所在路径,后面会用到,比如:C:\ProgramFiles(x86)\Google\Chrome\Application(系统默认安装位置)环境变量配置这一步非常关键!!在桌面找到此电脑图标,右键–>属性,然后找到高级系统设置然后点击环境变量在用户变量中找到Path变量,选中path变量后点击编辑![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/034d915fb8134065ba6703dfd34fdcab.png点击新建按钮,然后把刚才复制的chrome.exe的路径位置粘贴到此处,如下图所示:.然后切记:退出时有确定键一直选择”确定“键才能使保存生效Python库安装将代码拷贝到Pycharm编辑器中,选择好自己的Python环境(关于如何配置Python环境如果大家不会的话就自行百度一下,网上很多教程)如果看到如下图所示的selenium爆红在编辑器中左下角找到Terminal(终端),输入命令安装selenium库pipinstallselenium1如果time库爆红,同样的命令安装time库pipinstalltime1完整代码现在前面的准备工作已全部就绪,先贴完整python代码fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.selectimportSelectimporttime#初始化seleniumurl='https://wenshu.court.gov.cn/website/wenshu/181029CR4M5A62CH/index.html?'option=webdriver.ChromeOptions()option.add_argument('--start-maximized')option.add_experimental_option('excludeSwitches',['enable-automation'])#'profile.default_content_settings.popups':0==禁用弹出窗口#'download.default_directory':'D:\Desktop\wenshu'==设置默认下载路径#'profile.default_content_setting_values.automatic_downloads':1==并设置自动下载的选项prefs={'profile.default_content_settings.popups':0, 'download.default_directory':'D:\wenshu', #设置自己的下载路径'profile.default_content_setting_values.automatic_downloads':1}option.add_experimental_option('prefs',prefs)driver=webdriver.Chrome(options=option)#设置打开的浏览器窗口最大化driver.maximize_window()driver.set_page_load_timeout(30)driver.get(url)#转到登录界面自动输入手机号密码进行登录driver.find_element(By.XPATH,'//*[@id="loginLi"]/a').click()text=driver.page_sourcetime.sleep(10)#等待页面渲染#进入iframe框iframe=driver.find_elements(By.TAG_NAME,'iframe')[0]driver.switch_to.frame(iframe)#下面的‘手机号’‘密码’输入自己中国裁判文书网注册的真实手机号密码username=driver.find_element(By.XPATH,'//*[@id="root"]/div/form/div/div[1]/div/div/div/input')username.send_keys('手机号')time.sleep(3)username=driver.find_element(By.XPATH,'//*[@id="root"]/div/form/div/div[2]/div/div/div/input')username.send_keys('密码')time.sleep(2)driver.find_element(By.XPATH,'//*[@id="root"]/div/form/div/div[3]/span').click()time.sleep(3)#必须加上表单退出,否者就是死元素无法定位driver.switch_to.default_content()#这行代码的作用就相当于你手动点了一下‘刑事案件’那个按钮#要下载民事案件就把下一行代码里的刑事案件改成‘民事案件’,以此类推driver.find_element(By.LINK_TEXT,'刑事案件').click()time.sleep(10)#testHtml(driver.page_source)_lastWindow=driver.window_handles[-1]driver.switch_to.window(_lastWindow)#选择案件批量下载#这行代码的作用就相当于你手动点了一下‘法院层级’那个按钮#driver.find_element(By.LINK_TEXT,'法院层级').click()#按照裁判日期排序显示最新600条#driver.find_element(By.LINK_TEXT,'裁判日期').click()#按照裁判日期从前到后显示最老600条#driver.find_element(By.LINK_TEXT,'裁判日期').click()#按照审判程序排序显示最新600条#driver.find_element(By.LINK_TEXT,'审判程序').click()#按照审判程序从前到后显示最老600条#driver.find_element(By.LINK_TEXT,'审判程序').click()#按照法院层级、地域及法院进行检索driver.find_element(By.LINK_TEXT,'高级法院(146202)').click()time.sleep(3)driver.find_element(By.LINK_TEXT,'上海市(1188)').click()#在搜索框输入关键词进行高级检索#定位到搜索框keyword=driver.find_element(By.XPATH,'//*[@id="_view_1545034775000"]/div/div[1]/div[2]/input')time.sleep(3)#输入高级检索关键词,例如工程纠纷keyword.send_keys('工程纠纷')time.sleep(3)#点击搜索按钮driver.find_element(By.XPATH,'//*[@id="_view_1545034775000"]/div/div[1]/div[3]').click()#将每页文件数设置为最大,15条page_size_box=Select(driver.find_element(By.XPATH,'//*[@id="_view_1545184311000"]/div[8]/div/select'))page_size_box.select_by_visible_text('15')deftest_exceptions(xpath):try:driver.find_element(By.XPATH,xpath)returnTrueexcept:returnFalsepage=1#最多显示600条文件,也就是40页whilepage
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 02:34 , Processed in 0.493933 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表