91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • python+selenium+chrome如何實現批量文件下載并自動創建文件夾

python+selenium+chrome如何實現批量文件下載并自動創建文件夾

發布時間:2020-07-30 11:38:39 來源:億速云 閱讀:516 作者:小豬 欄目:開發技術

這篇文章主要講解了python+selenium+chrome如何實現批量文件下載并自動創建文件夾,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

實現效果:通過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="(.*&#63;)" 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如何實現批量文件下載并自動創建文件夾有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

哈巴河县| 班戈县| 安福县| 和顺县| 密云县| 阿拉善左旗| 琼海市| 上饶县| 志丹县| 万山特区| 康定县| 万州区| 大余县| 沁水县| 荣昌县| 武乡县| 阳东县| 深水埗区| 栾川县| 九寨沟县| 崇文区| 洪泽县| 会同县| 黄大仙区| 临漳县| 光泽县| 左贡县| 临湘市| 从化市| 宁国市| 金门县| 怀来县| 南和县| 靖远县| 辽宁省| 定襄县| 永寿县| 浏阳市| 九龙城区| 仁化县| 牙克石市|