内容简介:实现需求:批量下载联想某型号的全部驱动程序。一般在做网络爬虫的时候,都是保存网页信息为主,或者下载单个文件。当涉及到多文件批量下载的时候,由于下载所需时间不定,下载的文件名不定,所以有一定的困难。在涉及下载的时候,需要先对
背景
实现需求:批量下载联想某型号的全部驱动程序。
一般在做网络爬虫的时候,都是保存网页信息为主,或者下载单个文件。当涉及到多文件批量下载的时候,由于下载所需时间不定,下载的文件名不定,所以有一定的困难。
思路
参数配置
在涉及下载的时候,需要先对 chromedriver
进行参数配置,设定默认下载目录:
global base_path profile = { 'download.default_directory': base_path } chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option('prefs', profile) driver = webdriver.Chrome(executable_path='../common/chromedriver', options=chrome_options) driver.implicitly_wait(10)
页面分析
联想官网上每个型号的驱动下载页面如上图所示,虽然前面有一个登陆的遮罩,但是实际上并不影响点击。需要注意的是:
-
驱动列表,需要点击才可以显示具体的下载项目表格,否则可以找到对应元素但无法获取正确的信息
driver_list.find_element_by_class_name('download-center_list_t_icon').click()
-
每个下载列表的表头建议做跳过处理
if sub_list.find_element_by_class_name('download-center_usblist_td01').text == '驱动名称': continue
下载处理
在页面中,找到“普通下载”的元素,点击即可下载。最终实现结果是我们希望根据网页的列表进行重命名和重新归档到文件夹,但是我们会发现如下几个问题:
- 下载过来的文件名无法控制。
- 依次下载的话,我们无法确认需要下载多久。并行下载的话,无法有效的区分重命名。
在网上找了很久,也没找到在下载时直接重命名的方法,所以最终选择依次下载,当每次下载完成后进行重命名和归档,思路如下:
- 对每个驱动目录,先新建一个文件夹,如:主板
- 点击下载后开始下载文件
- 通过
os
模块,找到下载目录中所有文件,并按创建时间排序,找到最新创建的文件 - 由于未完成的文件后缀为
.crdownload
(chrome),那么根据后缀来判断是否已完成下载,未完成的话继续等待 - 待下载完成,将文件重命名并剪切到开始建立的归档目录。这里需要注意的是,有些文件名中不能存在
/
符号,否则会导致重命名失败,需要做一下替换。
在后期测试的时候,发现还有几个坑需要注意:
- 在查找最新创建的文件时,需要注意
.DS_Store
文件的处理。(Mac系统,Windows则需要考虑thumbs.db
) - 需要判断一下最新创建的文件是否为文件夹,可以通过
filter
函数来处理
最新文件的 排序 查找实现如下:
def sort_file(): # 排序文件 dir_link = base_path dir_lists = list(filter(check_file, os.listdir(dir_link))) if len(dir_lists) == 0: return '' else: dir_lists.sort(key=lambda fn: os.path.getmtime(dir_link + os.sep + fn)) return os.path.join(base_path, dir_lists[-1]) def check_file(filename): # 忽略系统文件 if filename == '.DS_Store' or filename == 'thumbs.db': return False global base_path # 排除文件夹 return os.path.isfile(os.path.join(base_path, filename))
总结
最终实现效果如下:
完整代码参考: https://github.com/keejo125/w...
如果大家有更好的方法,也欢迎分享。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- jsp文件下载功能实现代码
- axios.js实现文件下载功能
- 前端js实现字符串/图片/excel文件下载
- jsp+servlet实现文件上传与下载功能
- JSP servlet实现文件上传下载和删除
- SpringMVC+Ajax实现文件批量上传和下载功能实例代码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
我看电商3:零售的变革
黄若 / 电子工业出版社 / 2018-4 / 49
在《我看电商3:零售的变革》之前,黄若先生的“我看电商”系列图书《我看电商》《再看电商》《我看电商2》,均为行业畅销书。黄若先生的图书有两大特如一是干货满满,二是观点鲜明。 “新零售”是眼下的热门词。在2017年里,数以万计的企业以“新零售”作为标识进入市场。但是社会上对“新零售“存在着各种模糊的定义和不尽相同的解读。 《我看电商3:零售的变革》中明确提出:新零售不应过分关注于渠道形式......一起来看看 《我看电商3:零售的变革》 这本书的介绍吧!