目录

前言

简介

地址链接

功能

实现百度网盘分享保存到自己的网盘

查看源码的方式出现http地址

java实现解析地址保存到数据库

Python webdriver.Chrome()的使用

Python实现自动分享


前言

本文可以学习了解java file 类操作和python 自动化测试,通过Python webdriver.Chrome()实现百度网盘自动点击分享地址和保存到我的网盘,供个人学习使用,在网上看过很多类似的文章,缺少解析url地址和python版本说明,特此总结

简介

地址链接

这是博主【拓跋阿秀】百度分享的计算机书籍

README.md · forthespada/CS-Books - Gitee.com

功能

实现百度网盘分享保存到自己的网盘

步骤:汇总

1、查看源码的方式出现http地址

2、java实现解析地址保存到数据库

3、Python webdriver.Chrome() 【谷歌驱动】的使用

4、Python实现自动分享

查看源码的方式出现http地址

####  00、C语言
​
- 《C程序设计语言(第二版)》 [百度云链接](https://gitee.com/link?XXX) 提取码:2and
- 《C Primer Plus 中英版》 [百度云链接](https://gitee.com/link?XXX) 提取码:2dox​

安装typora,下载分享地址链接 点击左下角查看源码或者【ctrl】

将带http地址保存到桌面【C:\Users\Administrator\Desktop\temp.txt】

java实现解析地址保存到数据库

FileUtils.java

package com.bridge.file;
​
import com.bridge.NetDiskUrl;
import com.bridge.jdbc.JDBCUtils;
import org.springframework.util.StringUtils;
​
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
​
public class FileUtils {
​private static String title = "";private static String subTitle = "";
​public static void readText() throws Exception {File file = new File("C:\\Users\\Administrator\\Desktop\\temp.txt");FileInputStream fis = new FileInputStream(file);//Construct BufferedReader from InputStreamReaderBufferedReader br = new BufferedReader(new InputStreamReader(fis));String line = null;List<NetDiskUrl> list = new ArrayList<>();while ((line = br.readLine()) != null) {NetDiskUrl netDiskUrl = extractUrls(line);if (netDiskUrl != null) {list.add(netDiskUrl);
//                System.out.println(netDiskUrl.toString());}}br.close();JDBCUtils.batchCommitInsert(list);}
​public static NetDiskUrl extractUrls(String input) {if (!StringUtils.hasText(input)) {return null;}input = input.trim();if (input.startsWith("####") && !input.startsWith("#####")) {if (input.contains("、")) {String[] split = input.split("、");title = split[1];subTitle = "";}}if (input.startsWith("#####")) {if (input.contains("、")) {String[] split = input.split("、");subTitle = split[1];}}
​String code = "";if (input.contains("提取码")) {code = input.substring(input.length() - 4);}
​// 提前http地址Pattern pattern = Pattern.compile("\\b(((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)|www.)" +"(\\w+:\\w+@)?(([-\\w]+\\.)+(com|org|net|gov" +"|mil|biz|info|mobi|name|aero|jobs|museum" +"|travel|[a-z]{2}))(:[\\d]{1,5})?" +"(((\\/([-\\w~!$+|.,=]|%[a-f\\d]{2})+)+|\\/)+|\\?|#)?" +"((\\?([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" +"([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)" +"(&(?:[-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" +"([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)*)*" +"(#([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)?\\b");Matcher matcher = pattern.matcher(input);if (matcher.find()) {NetDiskUrl netDiskUrl = new NetDiskUrl();netDiskUrl.setTitle(title);netDiskUrl.setSubTitle(subTitle);netDiskUrl.setUrl(matcher.group());netDiskUrl.setCode(code);return netDiskUrl;}return null;}
​public static void main(String[] args) {try {FileUtils.readText();} catch (Exception e) {e.printStackTrace();}}
}
​

NetDiskUrl.java

package com.bridge;
​
public class NetDiskUrl {
​private String title;
​private String  subTitle;
​private String url;
​private String code;
​@Overridepublic String toString() {return "NetDiskUrl{" +"title='" + title + '\'' +", subTitle='" + subTitle + '\'' +", url='" + url + '\'' +", code='" + code + '\'' +'}';}
​public String getTitle() {return title;}
​public void setTitle(String title) {this.title = title;}
​public String getSubTitle() {return subTitle;}
​public void setSubTitle(String subTitle) {this.subTitle = subTitle;}
​public String getUrl() {return url;}
​public void setUrl(String url) {this.url = url;}
​public String getCode() {return code;}
​public void setCode(String code) {this.code = code;}
}

JDBCUtils.java

package com.bridge.jdbc;
​
import com.bridge.NetDiskUrl;
​
import java.io.InputStream;
import java.sql.*;
import java.util.List;
import java.util.Properties;
​
/*** 封装数据库连接和关闭*/
​
public class JDBCUtils {public static Connection getConnection() throws Exception {//读取配置文件基本信息InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");Properties pros = new Properties();pros.load(is);String user = pros.getProperty("user");String password = pros.getProperty("password");String url = pros.getProperty("url");String driverClass = pros.getProperty("driverClass");//加载驱动Class.forName(driverClass);//获取连接return DriverManager.getConnection(url, user, password);}
​public static void closeResource(Connection conn, Statement ps) {try {if (ps != null)ps.close();} catch (SQLException e) {e.printStackTrace();}try {if (conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}}
​public static void closeResource(Connection conn, Statement ps, ResultSet rs) {try {if (ps != null)ps.close();} catch (SQLException e) {e.printStackTrace();}try {if (conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}try {if (rs != null)rs.close();} catch (SQLException e) {e.printStackTrace();}}
​public static void insert() throws Exception {Connection conn = JDBCUtils.getConnection();Statement st = conn.createStatement();for (int i = 1; i <= 20000; i++) {String sql = "insert into goods(name) values('name_" + i + "')";st.execute(sql);}}
​public static void testInsert1(){Connection conn = null;PreparedStatement ps = null;try {long start = System.currentTimeMillis();//计算花费时间conn = JDBCUtils.getConnection();String sql = "insert into goods(name) values(?)";ps = conn.prepareStatement(sql);for(int i = 1;i<=20000;i++){ps.setObject(1,"name_"+i);ps.execute();}long end = System.currentTimeMillis();System.out.println(end-start+"s");}catch (Exception e){e.printStackTrace();}finally {JDBCUtils.closeResource(conn,ps);}}
​
​/*** 批量提交*/public static void batchCommitInsert(List<NetDiskUrl> list) {Connection conn = null;PreparedStatement ps = null;try {long start = System.currentTimeMillis();//计算花费时间conn = JDBCUtils.getConnection();conn.setAutoCommit(false);//不允许自动提交数据String sql = "INSERT INTO test.t_baidu_url (id,title, sub_title, url, code) VALUES(? , ?, ?, ?, ?);";ps = conn.prepareStatement(sql);for (int i= 0;i < list.size();i++) {NetDiskUrl diskUrl = list.get(i);ps.setObject(1, i);ps.setObject(2, diskUrl.getTitle());ps.setObject(3, diskUrl.getSubTitle());ps.setObject(4, diskUrl.getUrl());ps.setObject(5, diskUrl.getCode());//1、“攒”sqlps.addBatch();if (i % 500 == 0) {//2、执行batchps.executeBatch();//3、清空batchps.clearBatch();}}//提交数据conn.commit();long end = System.currentTimeMillis();System.out.println(end - start + "ms");} catch (Exception e) {e.printStackTrace();} finally {JDBCUtils.closeResource(conn, ps);}}
}

Python webdriver.Chrome()的使用

webdriver.Chrome()的使用

1.前提 Python与Chrome路径下均安装chromedriver.exe。

2.chromedriver.exe版本选择及下载 下载地址为:CNPM Binaries Mirror Chrome版本查看:浏览器右上角三个点->帮助->关于Google Chrome

chromedriver.exe版本需要与浏览器版本一致或者接近:

3.安装 下载后解压,将 chromedriver.exe复制到下面两个目录中:

Chrome目录:比如C:\Program Files (x86)\Google\Chrome\Application Python目录:比如D:\Softwares\Python39

4.添加环境变量 将上述Chrome路径添加进系统环境光变量,Python使用时应该加入环境变量了,这个就不用管了。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

Python实现自动分享

安装python3.8.X

Python Release Python 3.8.10 | Python.org

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
import pymysql
​
# 创建链接
# 赋值给 conn连接对象
# Python3.8。  我的修改方法:将 find_element_by_属性("value") 改为 find_element("By.属性","value")
# 保存到百度云盘的方法
def save_bdy(conn):try:# 获取数据库游标cursor = conn.cursor()# 查询保存了资源分享链接的res_url,和密码:captcha,状态为0表示没有处理cursor.execute("select id rID, url, code from t_baidu_url where status = '0' ")# 将保存好后的资源对应的记录状态标记为1update_sql = "update t_baidu_url set status = '1' where id = %d "results = cursor.fetchall()# 创建Chrome浏览器,显示界面的,为了后面刚开始需要网盘登录时使用browser = webdriver.Chrome()#打开链接 30s内登录browser.get("https://pan.baidu.com/")time.sleep(30)for (rID, url, code) in results:try:# 打开资源分享链接browser.get(url)# 判断是否有密码if code:# 获取资源密码输入框pwd = browser.find_element(By.ID, 'accessCode')# 在框中输入密码pwd.send_keys(code)# 延时4秒time.sleep(4)# 发送回车键进入到资源页面pwd.send_keys(Keys.ENTER)time.sleep(10)# 找到“保存到网盘”的这个按钮button = browser.find_element(By.CSS_SELECTOR, 'a[title="保存到网盘"]')# 单击,注意这时候断点到这里停一下,如果如要认证,你可以填写认证可扫码认证都可以,# 认证好后,会出现选择文件夹这个对话框,# 只需要认证一次,后续出直接弹出这个文件选择框,自动进行即可# 注意一定到断点,进你进行认证时后续程序不要执行button.click()time.sleep(5)# 在文件夹选择对话框中选择你想到保存到的文件夹,比如我的资源fold = browser.find_element(By.CSS_SELECTOR, 'span[node-path="/编程书籍大全"]')# 单击这个文件夹就会选中fold.click()time.sleep(1)# 然后获取确定按钮并单击就保存成功了ok = browser.find_element(By.CSS_SELECTOR, 'a[title="确定"]')ok.click()time.sleep(5)cur = conn.cursor()try:# 保存成功后,就修改数据库记录的状态cur.execute(update_sql % rID)conn.commit()except Exception as e:conn.roleback()print(e)finally:cur.close()# 异常忽略except Exception as e:print(e)except Exception as e:print(e)
​
if __name__ == '__main__':conn = pymysql.connect(host='127.0.0.1',  # 本地回环地址port=3306,  # 默认端口user='xxx',  # 用户名  如:root密码英文='xxx',  # 密码 如:rootdatabase='test',  # 连接数据库名称charset='utf8'  # 编码 不能写utf-8)save_bdy(conn)

实现百度网盘分享保存到自己的网盘相关推荐

  1. 南网elink文件保存位置_南网elink官网

    南网elink官网是一款专门为业内人员打造的办公工具,而且可以方便内部人员更好的进行通讯,而且还能及时了解到相关的资料和动态,让您拥有了这款软件就能更好的进行办公,更多的有趣功能等您来这里发现哦! 南 ...

  2. 南网elink文件保存位置_南网elink手机版下载-南方电网elink安装包app_5577安卓网

    南方电网elink安装包下载推荐给大家!南网elink手机版是一款专为南方电网内部员工打造的协同办公软件,以通讯,公告,视频会议,办事进度查询等内容为主题,更好的服务员工以及合作伙伴! [软件介绍] ...

  3. 南网elink文件保存位置_南网elink手机版下载-南方电网elink安装包app _5577安卓网...

    南方电网elink安装包下载推荐给大家!南网elink手机版是一款专为南方电网内部员工打造的协同办公软件,以通讯,公告,视频会议,办事进度查询等内容为主题,更好的服务员工以及合作伙伴! [软件介绍] ...

  4. 百度网盘分享出去文件不存在_百度网盘分享文件被取消了怎么办?找回被取消分享文件的方法...

    现在人们都习惯使用网盘来保存和分享资源,但是有时在分享文件后,点击链接出现[啊哦,你来晚了,分享的文件已经被取消了,下次要早点哟.]问题,造成文件无法共享.下面小编说说这个问题的解决方法. 百度网盘分 ...

  5. 软件测试“因子表”使用测试工具PICT下载安装,PICT中文乱码问题,pict下载百度网盘分享

    有没有思考过"如何让有限的测试具有代表整体的测试覆盖率"? 在测试工作中,经常会遇到这样的场景:一个软件功能有多个输入项,每个输入项有多个可选项:一个接口有多个参数,每个参数有多个 ...

  6. 解决百度网盘(百度云)分享链接不存在失效、分享的文件已经被取消的问题

    解决百度网盘(百度云)分享链接不存在失效.分享的文件已经被取消的问题 参考文章: (1)解决百度网盘(百度云)分享链接不存在失效.分享的文件已经被取消的问题 (2)https://www.cnblog ...

  7. python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...

    今日推荐(在线观看)[完结]私域流量实战训练营(百度网盘分享下载)对  (在线观看)[完结]私域流量实战训练营(百度网盘分享下载)感兴趣的朋友可以学习参考 (有需要的找我,你就可以拥有这个课程)需要此 ...

  8. kitti百度网盘分享 kitti百度云盘,全套kitti分享 自动驾驶

    kitti百度网盘分享 kitti百度云盘 其实,早在一年前,我就写了下面这篇文章,分享了自动驾驶相关任务基准数据集kitti全套的百度网盘,并且先后有几百个朋友从StrongerTang 这里拿到了 ...

  9. kitti数据集简介、百度网盘分享 kitti-object、kitti-tracking 全套数据集 自动驾驶

    0 写在前面 最近在学习MOT相关知识,之前暑期实习是在一家自动驾驶公司,公司资料里已经有了kitti数据集,所以直接用的,并没有去下载.但是最近自己在学校也用到了这个数据集,所以就去官网下载了,结果 ...

最新文章

  1. URL化 替换空格
  2. 在SQL2005/SQL2008中CTE用法差异
  3. 放寒假的硕博研究生将经历什么?
  4. 2012-01-17-04
  5. linux can设备,Linux CAN编程详解
  6. SpringBoot 解决“不支持发行版本xx”的问题
  7. PHP设计模式——工厂方法
  8. css3 下拉缩放显示定位导航
  9. javascript--this机制
  10. easyUi后台,模板实现前台简易版网上书店功能实现
  11. CentOS7下EasyDarwin的安装搭建
  12. Linux——根目录结构
  13. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略
  14. 高级计算机网络实验——c++实现ping工具
  15. 全国计算机二级c++上机试题.cpp,计算机二级考试C++上机考试试题
  16. CentOS 7 安装以太坊(Etherum)Geth尝试挖矿
  17. 基于PLC十字路口交通灯控制(可计算车流量、调整时间等)课程设计毕业设计
  18. 遗传算法求解一元函数最大值||python
  19. 基于eclipse开发Android天气,基于android平台的天气预报软件的设计与实现.doc
  20. java 透传_透明传输 - javaadu - 博客园

热门文章

  1. 计算机网络驱动坏了怎么解决办法,电脑网卡驱动坏了怎么办
  2. 怎样看懂电路板?电路板短路检查方法是什么?
  3. 一个简单答题系统的设计与实现(四)
  4. android 通知栏歌词,状态栏歌词插件下载
  5. 没有相爱,只有相杀:微软和谷歌又撕上了...
  6. ColorUI配色详情
  7. 2p C和3p C的区别
  8. 没有乔布斯的MacWorld :8个瞬间
  9. oracle:时间间隔
  10. MySQL-SQL优化分析