婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 用Python自動下載網站所有文件

用Python自動下載網站所有文件

熱門標簽:地圖標注推廣單頁 百應ai電銷機器人鄭州 n400電話申請多少錢 長春人工智能電銷機器人官網 如何在地圖標注文字 女王谷地圖標注 廈門crm外呼系統如何 ai地圖標注 西藏快速地圖標注地點

最近維基 jie mi 徹底公開了網站的全部文件,我就在想如何使用 Python 將其下載到本地永久保存,于是就有了這篇文章,寫爬蟲會遇到很多坑,借鑒他人經驗,考慮越全面,出錯的概率就越小。

假如一個網站,里面有很多鏈接,有指向文件的,有指向新鏈接的,新的鏈接點擊進去后,仍然是有指向文件的,有指向新鏈接的,類似一個文件夾,里面即有文件,又有目錄,目錄中又有文件和目錄。如何從這樣的網站上下載所有的文件,并按網站的目錄結構來保存這些文件呢?

關鍵詞:Python、下載、正則表達式、遞歸。

按照自頂向下來設計程序,我們整理自己的思路,然后使用 Python 語言來翻譯下即可。

思路:由于目錄的深度不固定,也不可能窮舉,且每一個目錄的處理方式和子目錄父目錄的處理流程都是一樣的,因此我們可以使用遞歸來下載所有文件。

遞歸代碼必須要有退出條件,退出條件要放在前面,本例中的遞歸退出條件就是:如果是文件就下載,下載完遞歸函數即完成任務。

總體思路:

1、給定一個 url,判斷是否是文件,如果是文件,下載即可,然后函數結束。

2、如果給定 url 不是文件,那么訪問該 url,并獲取它下面的所有鏈接。

3、遍歷步驟 2 產生的所有鏈接,遞歸的執行步驟 1 和 2,直到程序運行結束。

以上思路,用代碼描述如下:

import urllib.request
import requests
import re, os


def get_file(url):
 '''
 遞歸下載網站的文件
 :param url:
 :return:
 '''
 if isFile(url):
  print(url)
  try:
   download(url)
  except:
   pass
 else:
  urls = get_url(url)
  for u in urls:
   get_file(u)

前面導入的包在接下來函數中會用到,下面就是逐漸層向下,實現子功能。

判斷鏈接是否指向文件:

這里總結 url 規律,很容易寫出。

def isFile(url):
 '''
 判斷一個鏈接是否是文件
 :param url:
 :return:
 '''
 if url.endswith('/'):
  return False
 else:
  return True

下載文件:

下載文件時要從 url 中獲取文件應該存儲的位置,并使用 os.makedirs 來創建多級目錄。然后使用 urllib.request.urlretrieve 來下載文件。

def download(url):
 '''
 :param url:文件鏈接
 :return: 下載文件,自動創建目錄
 '''
 full_name = url.split('//')[-1]
 filename = full_name.split('/')[-1]
 dirname = "/".join(full_name.split('/')[:-1])
 if os.path.exists(dirname):
  pass
 else:
  os.makedirs(dirname, exist_ok=True)
 urllib.request.urlretrieve(url, full_name)

獲取 url 下的所有鏈接:

這里要具體網站具體分析,看看如何使用正則表達式獲取網頁中的鏈接,這樣的正則表達式可以說是再簡單不過了。

def get_url(base_url):
 '''
 :param base_url:給定一個網址
 :return: 獲取給定網址中的所有鏈接
 '''
 text = ''
 try:
  text = requests.get(base_url).text
 except Exception as e:
  print("error - > ",base_url,e)
  pass
 reg = 'a href="(.*)" rel="external nofollow" >.*/a>'
 urls = [base_url + url for url in re.findall(reg, text) if url != '../']
 return urls

這里有個小坑,就是網站有個鏈接是返回上級頁面的,url 的后輟是 '../' 這樣的鏈接要去掉,否則遞歸函數就限入了死循環。

接下來就是寫主函數,執行任務了,慢慢等它下載完吧。

if __name__ == '__main__':
 get_file('https://file.wikileaks.org/file/')

其實,還會存兩個問題:

1、假如網站某頁有個鏈接它指向了首頁,那么遞歸程序仍然會限入一個死循環,解決方法就是將訪問過的 url 保存在一個列表里(或者其他數據結構),如果接下來要訪問的 url 不在此列表中,那么就訪問,否則就忽略。

2、如果下載的過程中程序突然報錯退出了,由于下載文件較慢,為了節約時間,那么如何讓程序從報錯處繼續運行呢?這里可采用分層遞歸,一開始時先獲取網站的所有一級 url 鏈接,順序遍歷這些一級 url 鏈接,執行上述的 get_file(url) ,每訪問一次一級 url 就將其索引位置加1(索引位置默認為0,存儲在文件中或數據庫中),程序中斷后再運行時先讀取索引,然后從索引處開始執行即可。另外,每下載成功一個文件,就把對應的 url 也保存在文件中或數據庫中,如果一級 url 下的鏈接已經下載過文件,那么就不需要重新下載了。

以上就是用Python自動下載網站所有文件的詳細內容,更多關于python 自動下載網站文件的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 詳解Python自動化之文件自動化處理
  • Python自動化之批量處理工作簿和工作表
  • Python自動掃描出微信不是好友名單的方法
  • python自動化之如何利用allure生成測試報告
  • 用python自動生成日歷
  • 用Python寫腳本自動評論再也不怕碰到噴子

標簽:拉薩 興安盟 綿陽 亳州 內江 廊坊 渭南 黔東

巨人網絡通訊聲明:本文標題《用Python自動下載網站所有文件》,本文關鍵詞  用,Python,自動,下載網站,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《用Python自動下載網站所有文件》相關的同類信息!
  • 本頁收集關于用Python自動下載網站所有文件的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    在线观看国产一区二区| 大尺度一区二区| 黄一区二区三区| 99久久精品国产网站| 日韩精品一区二区三区视频| 亚洲成人午夜影院| 欧美在线小视频| 午夜激情久久久| 欧美性一级生活| 一区二区视频在线看| 91免费视频网| 亚洲精品日韩专区silk| 91丨国产丨九色丨pron| 亚洲麻豆国产自偷在线| 99re免费视频精品全部| 亚洲欧美日韩国产一区二区三区| 色综合久久综合中文综合网| 亚洲激情图片qvod| 欧美v日韩v国产v| 色综合一区二区| 国产成人丝袜美腿| 日本女人一区二区三区| 国产精品午夜久久| 亚洲免费电影在线| 另类中文字幕网| 亚洲图片你懂的| 国产精品网曝门| 久久久久久97三级| 精品免费日韩av| 欧美视频完全免费看| 色婷婷av一区二区三区大白胸 | 欧美夫妻性生活| 亚洲黄色小说网站| 欧美日韩免费电影| 日韩精品资源二区在线| 日韩不卡一区二区三区| 亚洲六月丁香色婷婷综合久久| 欧美蜜桃一区二区三区 | 欧美精品一区二区高清在线观看| 成人精品一区二区三区中文字幕| 久久精品久久久精品美女| 亚洲国产欧美在线人成| 一区二区三区在线看| 精品伦理精品一区| 欧美性生活一区| 91精品国产综合久久久蜜臀粉嫩 | 日韩精品中文字幕在线不卡尤物| 色偷偷久久一区二区三区| 99精品在线观看视频| 日本韩国精品在线| 99久久精品国产观看| 国产suv精品一区二区883| 国内精品免费在线观看| 国产乱妇无码大片在线观看| 国产成人午夜片在线观看高清观看| 午夜精品免费在线观看| 国产在线精品视频| 99久久精品免费观看| 精品国产一二三区| 久久女同互慰一区二区三区| 国产视频在线观看一区二区三区| 自拍av一区二区三区| 日韩精品电影在线观看| 成人在线综合网站| 欧美人与性动xxxx| 91美女视频网站| 国产乱子伦一区二区三区国色天香| 日韩美女精品在线| 久久精品夜色噜噜亚洲a∨| 欧美天堂亚洲电影院在线播放| 国产伦精品一区二区三区视频青涩| 国产精品美女一区二区| 日韩一级二级三级| 欧美日韩电影一区| 色婷婷av一区二区三区之一色屋| 成人av在线播放网址| 国产传媒久久文化传媒| 风间由美一区二区av101| 免费xxxx性欧美18vr| 亚洲成人久久影院| 日本少妇一区二区| 国产伦精一区二区三区| 美女性感视频久久| 国产毛片精品一区| www.综合网.com| 色欧美日韩亚洲| 欧美酷刑日本凌虐凌虐| 欧美精品久久天天躁| 日韩视频不卡中文| 国产亚洲成aⅴ人片在线观看| 久久婷婷一区二区三区| 《视频一区视频二区| 视频在线观看91| 成人美女视频在线观看18| 99久久久久久99| 欧美哺乳videos| 亚洲少妇中出一区| 性久久久久久久| 白白色 亚洲乱淫| 日韩一区二区三区四区 | 国产欧美日本一区视频| 亚洲激情综合网| 国产精品一级片| 欧美一卡二卡在线| 亚洲在线一区二区三区| 成人天堂资源www在线| 精品国产乱码久久久久久老虎 | 欧美一区二区视频在线观看| 亚洲欧美日韩在线不卡| 国产黄色精品视频| 精品卡一卡二卡三卡四在线| 亚洲成a人片在线不卡一二三区| 国产成人午夜99999| 久久综合国产精品| 精品亚洲国内自在自线福利| 欧美久久免费观看| 亚洲精品日韩一| 在线观看免费成人| 亚洲欧洲av一区二区三区久久| 国产精品一区二区视频| 欧美国产精品专区| 99热国产精品| 亚洲最新视频在线观看| 欧美性猛片xxxx免费看久爱| 亚洲最大成人综合| 欧美久久久久久久久久| 日韩1区2区日韩1区2区| 日韩一级片在线观看| 经典一区二区三区| 最新日韩在线视频| 欧美手机在线视频| 国产一区视频网站| 久久久久久9999| 97se亚洲国产综合自在线不卡 | 91国偷自产一区二区三区观看| 亚洲美女免费视频| 日韩一区二区三区在线观看| 国产成人自拍网| 亚洲影院理伦片| 中文字幕欧美区| 欧美一区二区视频在线观看| 色婷婷av一区| 麻豆精品蜜桃视频网站| 久久在线免费观看| 色香色香欲天天天影视综合网| 亚洲国产视频一区| 国产精品全国免费观看高清| 日韩欧美国产一二三区| 欧美日韩国产片| 欧美在线免费观看亚洲| 成人丝袜高跟foot| 久久er99精品| 天堂va蜜桃一区二区三区| 日韩美女久久久| 亚洲欧美日韩综合aⅴ视频| 欧美日本在线播放| 色美美综合视频| 国产aⅴ综合色| 粉嫩av一区二区三区| 99久久免费国产| 91久久久免费一区二区| 欧美体内she精高潮| 欧美性猛交xxxx黑人交| 色综合久久久网| 色系网站成人免费| 91精品国产91热久久久做人人 | 欧美电影免费观看高清完整版| 精品视频一区二区不卡| 91精品国产综合久久福利| 欧美精品一区二| 国产欧美精品国产国产专区 | 亚洲成va人在线观看| 亚洲成av人片一区二区三区 | www.日本不卡| 日本韩国精品在线| 777久久久精品| 久久久不卡网国产精品二区| 中文字幕不卡的av| 亚洲一区二区视频在线| 免费成人av在线播放| 国产成人日日夜夜| 成人爱爱电影网址| 91精品国产品国语在线不卡| 日本一区二区视频在线观看| 国产精品看片你懂得| 午夜精品久久一牛影视| 高清免费成人av| 日本黄色一区二区| 国产精品久久看| 国产乱国产乱300精品| 91精品免费在线观看| 亚洲色图一区二区三区| 五月婷婷另类国产| 国产99久久久久| 久久久亚洲精华液精华液精华液| 亚洲妇熟xx妇色黄| 欧美性生活久久| 国产精品久久久久桃色tv| 精品一二三四区| 欧美激情自拍偷拍|