实现效果:通过url所绑定的关键名创建目录名,每次访问一个网页url后把文件下载下来
代码:
其中 data[i][0]、data[i][1] 是代表 关键词(文件保存目录)、网站链接(要下载文件的网站)
def getDriverHttp(): for i in range(reCount): # 创建Chrome浏览器配置对象实例 chromeOptions = webdriver.ChromeOptions() # 设定下载文件的保存目录为d盘的tudi目录, # 如果该目录不存在,将会自动创建 prefs = {"download.default_directory": "e:\\tudi\\{0}".format(data[i][0]), "profile.default_content_setting_values.automatic_downloads":1} # 将自定义设置添加到Chrome配置对象实例中 chromeOptions.add_experimental_option("prefs", prefs) # 启动带有自定义设置的Chrome浏览器 # driver = webdriver.Chrome(executable_path="e:\\chromedriver", chrome_options=chromeOptions) driver = webdriver.Chrome(chrome_options=chromeOptions) driver.get(data[i][1]) info2 = re.findall(r'<a href="#" rel="external nofollow" onclick="(.*" cssclass="xz_pic">', driver.page_source, re.S) print(len(info2)) for js in info2: driver.execute_script(js) def main(): getDriverHttp()
注意:python 使用selenium下载文件时,chrome会提示是否下载多个文件(Download multiple files)
prefs = {"download.default_directory": "e:\\tudi\\{0}".format(data[i][0]), "profile.default_content_setting_values.automatic_downloads":1}
设置允许多个文件下载。
补充知识:python项目实现配置统一管理的操作
一个比较大的项目总是会涉及到很多的参数,最好的方法就是在一个地方统一管理这些参数。最近看了不少的python项目,总结了两种很有意思的配置管理方法。
第一种 基于easydict实现的配置管理
首先需要安装numpy、easydict以及yaml:
pip install numpy
pip install easydict
pip install yaml
就可以了。
然后定义配置类config.py:
import numpy as np from easydict import EasyDict as edict import yaml # 创建dict __C = edict() cfg = __C # 定义配置dict __C.dev = edict() __C.dev.name = 'dev-xingoo' __C.dev.age = 20 __C.test = edict() __C.test.name = 'test-xingoo' __C.test.age = 30 # 内部方法,实现yaml配置文件到dict的合并 def _merge_a_into_b(a, b): """Merge config dictionary a into config dictionary b, clobbering the options in b whenever they are also specified in a. """ if type(a) is not edict: return for k, v in a.items(): # a must specify keys that are in b if k not in b: raise KeyError('{} is not a valid config key'.format(k)) # the types must match, too old_type = type(b[k]) if old_type is not type(v): if isinstance(b[k], np.ndarray): v = np.array(v, dtype=b[k].dtype) else: raise ValueError(('Type mismatch ({} vs. {}) ' 'for config key: {}').format(type(b[k]), type(v), k)) # recursively merge dicts if type(v) is edict: try: _merge_a_into_b(a[k], b[k]) except: print(('Error under config key: {}'.format(k))) raise else: b[k] = v # 自动加载yaml文件 def cfg_from_file(filename): """Load a config file and merge it into the default options.""" with open(filename, 'r', encoding='utf-8') as f: yaml_cfg = edict(yaml.load(f)) _merge_a_into_b(yaml_cfg, __C)
使用的时候很简单,main.py:
from config import cfg_from_file from config import cfg cfg_from_file('config.yml') print(cfg.dev.name) print(cfg.test.name)
同级目录下创建配置文件config.yaml
dev:
name: xingoo-from-yml
输出:
xingoo-from-yml
test-xingoo
总结
这样的好处就是在任何的Python文件中只要from config import cfg就可以使用配置文件。
第二种 基于Class实现
这种基于普通的python对象实现的,创建config2.py:
class Config: def __init__(self): self.name = 'xingoo-config2' self.age = 100
使用的时候直接创建一个新的对象,如何python模块之间需要引用这个变量,那么需要把配置对象传过去:
import config2 as config2 cfg2 = config2.Config() print(cfg2.name) print(cfg2.age)
输出为:
xingoo-config2
100
总结
第二种方法简单粗暴...不过每次传递参数也是很蛋疼。还是喜欢第一种方式。
以上这篇python+selenium+chrome批量文件下载并自动创建文件夹实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 梅艳芳.1994-是这样的(金碟版)【华星】【WAV+CUE】
- 张学友《真情流露》HQ+S纯银深度[低速原抓WAV+CUE]
- 江志丰2012-七天[豪记][WAV+CUE]
- 黑鸭子2003《聆听柔情HQCD》[日本版][WAV+CUE]
- 群星《奔赴!万人现场 第5期》[FLAC/分轨][587.07MB]
- 关大洲《国家宝藏 第四季原声音乐 关大洲作品》[320K/MP3][109.49MB]
- 关大洲《国家宝藏 第四季原声音乐 关大洲作品》[FLAC/分轨][527.23MB]
- LOL双城之战大乱斗什么时候更新 双城大乱斗上线更新时间介绍
- s14全球总决赛冠军皮肤有什么 2024T1冠军皮肤选择一览
- faker加里奥s14决赛什么出装 faker加里奥s14决赛出装介绍
- 《马里奥与路易吉RPG:兄弟齐航》Fami通34分:路易吉存在感拉满
- 数据挖掘者新发现:NS继任机型或支持4K分辨率
- 宫本茂谈任天堂未来:研发费用增加但注重创意与传承
- 陈小云.2000-餐厅综艺金榜【海丽唱片】【WAV+CUE】
- 卓文萱.2008-翻滚吧!蛋炒饭电视原声带【滚石】【FLAC分轨】