admin 管理员组

文章数量: 1184232

文章目录

  • 前言
  • 一、所使用的工具
  • 二、明确目标以及分析步骤
    • 1.明确目标
    • 2.分析步骤
  • 三、开始写代码
    • 0.引入库+创建csv文件
    • 1.登陆QQ邮箱
    • 2.进入文件中转站
    • 3.进入新标签页
    • 4.进入分享页面获取文件下载地址
    • 5.关闭分享页面,返回文件中转站
    • 6.合并小步骤,增加一些细节,得到完整代码
  • 总结


前言

最近使用QQ邮箱中的文件中转站来生成一些文件的外部链接,然后发现,在中转站中下载文件容易,但是想要取得它的外部链接就有些困难,而且文件数量还挺多,所以我就想使用python来对文件中转站的文件下载地址进行批量获取。


一、所使用的工具

1.python3.9
2.pycharm2021
3.Chrome浏览器+对应版本的驱动

谷歌浏览器下载:
[https://www.google/intl/zh-CN/chrome/]
如果有chrome驱动安装有问题的可以浏览下面网站:
https://blog.csdn/n123456uo/article/details/91412740
如果没有找到自己谷歌浏览器对应驱动版本,可以访问下面链接来查找与自己浏览器版本对应的驱动版本:
https://chromedriver.storage.googleapis/LATEST_RELEASE_+自己谷歌浏览器的版本号码
例如:谷歌浏览器版本号码为88.0.4324,就访问https://chromedriver.storage.googleapis/LATEST_RELEASE_88.0.4324

二、明确目标以及分析步骤

1.明确目标


目标:将上图的88份文件的下载地址爬取下来存放在csv表格中

2.分析步骤

三、开始写代码

0.引入库+创建csv文件

库代码如下:

import selenium
from selenium import webdriver
import pyperclip
import os
import time
import warnings
import csv

创建csv文件代码如下:


# <--------------------0.新建一个表格‘文件中转站下载链接’-------------------->
f=open('文件中转站下载链接.csv',mode='w',encoding='utf-8',newline='')
# 设置好列名
csv_writer=csv.DictWriter(f,fieldnames=['序号','标题','链接'])
csv_writer.writeheader()#自动写入表头

1.登陆QQ邮箱

两种方式(推荐下面两位大神的博客):
方式1:填充账号密码
方式2:使用cookie免密登陆
我使用的是方式1,因为在使用方式2的时候发现当天使用正常,但隔天就无法登陆,又需要重新获取一次cookie(不知道是啥原因)

具体代码如下(下方代码借鉴自:https://blog.csdn/zhengyizyp/article/details/103508939):


browser = webdriver.Chrome()
# <--------------------1.登陆qq邮箱------------------------------>
browser.get('https://mail.qq/')
# 定位login_frame
browser.switch_to.frame("login_frame")

# 定位账号、密码,并输入
browser.find_element_by_xpath('//*[@]').send_keys("qq号")
browser.find_element_by_xpath('//*[@]').send_keys("qq密码")
# 定位登录按钮
browser.find_element_by_xpath('//*[@]').click()
# 离开login_frame
# browser.switch_to.parent_frame()
browser.switch_to.default_content()
# 等待一秒
time.sleep(1)


2.进入文件中转站

在输入完账号密码之后,qq邮箱有可能会进行身份核验,如下图:

对于出现这种情况,我在代码中使用了异常处理,使得当此情况出现使用者可以在60s之内完成手机验证码输入或者刷新页面之后使用手机qq扫码登陆。代码如下

try:
   #点击文件中转站按钮来进入文件中转站
   browser.find_element_by_css_selector('#folder_ftn').click()
   #以下四行异常处理代码是为了应对有些时候QQ邮箱在qq号和密码登陆后出现身份验证的情况,
   #所以留出60s的时间来完成人工的登陆,60s之后程序会继续运行
except selenium.common.exceptions.NoSuchElementException

本文标签: 文件 中转站 下载链接 来完成 邮箱