电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

python+selenium+chrome批量文件下載并自動創(chuàng)建文件夾實(shí)例

瀏覽:3日期:2022-07-27 11:50:59

實(shí)現(xiàn)效果:通過url所綁定的關(guān)鍵名創(chuàng)建目錄名,每次訪問一個網(wǎng)頁url后把文件下載下來

代碼:

其中 data[i][0]、data[i][1] 是代表 關(guān)鍵詞(文件保存目錄)、網(wǎng)站鏈接(要下載文件的網(wǎng)站)

def getDriverHttp(): for i in range(reCount): # 創(chuàng)建Chrome瀏覽器配置對象實(shí)例 chromeOptions = webdriver.ChromeOptions() # 設(shè)定下載文件的保存目錄為d盤的tudi目錄, # 如果該目錄不存在,將會自動創(chuàng)建 prefs = {'download.default_directory': 'e:tudi{0}'.format(data[i][0]), 'profile.default_content_setting_values.automatic_downloads':1} # 將自定義設(shè)置添加到Chrome配置對象實(shí)例中 chromeOptions.add_experimental_option('prefs', prefs) # 啟動帶有自定義設(shè)置的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='http://www.hdgsjgj.cn/bcjs/4286.html#' 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}

設(shè)置允許多個文件下載。

補(bǔ)充知識:python項(xiàng)目實(shí)現(xiàn)配置統(tǒng)一管理的操作

一個比較大的項(xiàng)目總是會涉及到很多的參數(shù),最好的方法就是在一個地方統(tǒng)一管理這些參數(shù)。最近看了不少的python項(xiàng)目,總結(jié)了兩種很有意思的配置管理方法。

第一種 基于easydict實(shí)現(xiàn)的配置管理

首先需要安裝numpy、easydict以及yaml:

pip install numpy pip install easydictpip install yaml

就可以了。

然后定義配置類config.py:

import numpy as npfrom easydict import EasyDict as edictimport yaml # 創(chuàng)建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 # 內(nèi)部方法,實(shí)現(xiàn)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_filefrom config import cfg cfg_from_file(’config.yml’)print(cfg.dev.name)print(cfg.test.name)

同級目錄下創(chuàng)建配置文件config.yaml

dev:name: xingoo-from-yml

輸出:

xingoo-from-ymltest-xingoo

總結(jié)

這樣的好處就是在任何的Python文件中只要from config import cfg就可以使用配置文件。

第二種 基于Class實(shí)現(xiàn)

這種基于普通的python對象實(shí)現(xiàn)的,創(chuàng)建config2.py:

class Config: def __init__(self): self.name = ’xingoo-config2’ self.age = 100

使用的時候直接創(chuàng)建一個新的對象,如何python模塊之間需要引用這個變量,那么需要把配置對象傳過去:

import config2 as config2 cfg2 = config2.Config()print(cfg2.name)print(cfg2.age)

輸出為:

xingoo-config2100

總結(jié)

第二種方法簡單粗暴...不過每次傳遞參數(shù)也是很蛋疼。還是喜歡第一種方式。

以上這篇python+selenium+chrome批量文件下載并自動創(chuàng)建文件夾實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 新能源汽车电机定转子合装机 - 电机维修设备 - 睿望达 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 免费网站网址收录网_海企优网站推荐平台 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 物流公司电话|附近物流公司电话上门取货 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | 铜镍-康铜-锰铜-电阻合金-NC003 - 杭州兴宇合金有限公司 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 北京工业设计公司-产品外观设计-产品设计公司-千策良品工业设计 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 培训无忧网-教育培训咨询招生第三方平台| 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 |