python使用使用selenium实现批量文件下载实现批量文件下载
主要介绍了python使用selenium实现批量文件下载,文中通过示例代码介绍的非常详细,对大家的学习或者工
作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
背景背景
实现需求:批量下载联想某型号的全部驱动程序。
一般在做网络爬虫的时候,都是保存网页信息为主,或者下载单个文件。当涉及到多文件批量下载的时候,由于下载所需时间
不定,下载的文件名不定,所以有一定的困难。
思路思路
参数配置参数配置
在涉及下载的时候,需要先对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),那么根据后缀来判断是否已完成下载,未完成的话继续等待
评论0