如何使用python批量下载网站的文件_python+selenium+chrome批量文件下载并自动创建文件夹实例...

实现效果:通过url所绑定的关键名创建目录名,每次访问一个网页url后把文件下载下来ehQ免费资源网

代码:ehQ免费资源网

其中 data[i][0]、data[i][1] 是代表 关键词(文件保存目录)、网站链接(要下载文件的网站)ehQ免费资源网

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'', driver.page_source, re.S)

print(len(info2))

for js in info2:

driver.execute_script(js)

def main():

getDriverHttp()

ehQ免费资源网

注意:python 使用selenium下载文件时,chrome会提示是否下载多个文件(Download multiple files)ehQ免费资源网

prefs = {"download.default_directory": "e:\\tudi\\{0}".format(data[i][0]), "profile.default_content_setting_values.automatic_downloads":1}ehQ免费资源网

设置允许多个文件下载。ehQ免费资源网

补充知识:python项目实现配置统一管理的操作ehQ免费资源网

一个比较大的项目总是会涉及到很多的参数,最好的方法就是在一个地方统一管理这些参数。最近看了不少的python项目,总结了两种很有意思的配置管理方法。ehQ免费资源网

第一种 基于easydict实现的配置管理ehQ免费资源网

首先需要安装numpy、easydict以及yaml:ehQ免费资源网

pip install numpyehQ免费资源网

pip install easydictehQ免费资源网

pip install yamlehQ免费资源网

就可以了。ehQ免费资源网

然后定义配置类config.py:ehQ免费资源网

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:ehQ免费资源网

from config import cfg_from_file

from config import cfg

cfg_from_file('config.yml')

print(cfg.dev.name)

print(cfg.test.name)

同级目录下创建配置文件config.yamlehQ免费资源网

dev:ehQ免费资源网

name: xingoo-from-ymlehQ免费资源网

输出:ehQ免费资源网

xingoo-from-ymlehQ免费资源网

test-xingooehQ免费资源网

总结ehQ免费资源网

这样的好处就是在任何的Python文件中只要from config import cfg就可以使用配置文件。ehQ免费资源网

第二种 基于Class实现ehQ免费资源网

这种基于普通的python对象实现的,创建config2.py:ehQ免费资源网

class Config:

def __init__(self):

self.name = 'xingoo-config2'

self.age = 100

使用的时候直接创建一个新的对象,如何python模块之间需要引用这个变量,那么需要把配置对象传过去:ehQ免费资源网

import config2 as config2

cfg2 = config2.Config()

print(cfg2.name)

print(cfg2.age)

输出为:ehQ免费资源网

xingoo-config2ehQ免费资源网

100ehQ免费资源网

总结ehQ免费资源网

第二种方法简单粗暴...不过每次传递参数也是很蛋疼。还是喜欢第一种方式。ehQ免费资源网

以上这篇python+selenium+chrome批量文件下载并自动创建文件夹实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。ehQ免费资源网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值