____ _ __ __ ______ _____
/ __ __ _| | / /__ / /_ / ____/___ ____ __ __ /__ /
/ /_/ / / / / | /| / / _ / __ / / / __ / __ / / / / / /
/ ____/ /_/ /| |/ |/ / __/ /_/ / /___/ /_/ / /_/ / /_/ / / /
/_/ __, / |__/|__/___/_.___/____/____/ .___/__, / /_/
/____/ /_/ /____/
Created By : Raja Tomar License : Apache License 2.0 Email: [email protected]
Pywebcopy是一種免費的工具,用於將全部或部分網站複製到您的硬盤上以進行離線查看。
Pywebcopy將掃描指定的網站並將其內容下載到您的硬盤上。鏈接將自動重新設計到網站中的樣式表,圖像和其他頁面,以匹配本地路徑。使用其廣泛的配置,您可以定義網站的哪些部分以及如何復制。
Pywebcopy將檢查網站的HTML標記,並嘗試發現所有鏈接的資源,例如其他頁面,圖像,視頻,文件下載 - 任何內容。它將下載所有這些資源,並繼續尋找更多資源。通過這種方式,WebCopy可以“爬網”整個網站並下載所看到的所有內容,以創建源網站的合理傳真。
pywebcopy不包括虛擬DOM或任何形式的JavaScript解析。如果網站大量使用JavaScript運行,則如果Pywebcopy無法發現全部網站,則由於JavaScript被用於動態生成鏈接,因此不太可能會製作真正的副本。
Pywebcopy不會下載網站的原始源代碼,它只能下載HTTP服務器返回的內容。雖然它將盡最大努力創建網站的離線副本,但一旦複製了高級數據驅動的網站可能無法正常工作。
pywebcopy在PYPI上可用,可以使用pip輕鬆安裝
$ pip install pywebcopy
你準備出發了。閱讀下面的教程以開始。
您應該始終檢查是否成功安裝了最新的pywebcopy。
>>> import pywebcopy
>>> pywebcopy.__version___
7.x.x
您的版本可能不同,現在您可以繼續本教程。
要保存任何一頁,只需輸入Python控制台
from pywebcopy import save_webpage
save_webpage (
url = "https://httpbin.org/" ,
project_folder = "E://savedpages//" ,
project_name = "my_site" ,
bypass_robots = True ,
debug = True ,
open_in_browser = True ,
delay = None ,
threaded = False ,
)要保存完整的網站(這可能會超載目標服務器,因此請小心)
from pywebcopy import save_website
save_website (
url = "https://httpbin.org/" ,
project_folder = "E://savedpages//" ,
project_name = "my_site" ,
bypass_robots = True ,
debug = True ,
open_in_browser = True ,
delay = None ,
threaded = False ,
)運行測試很簡單,不需要任何外部庫。只需從pywebcopy軟件包的根目錄運行此命令。
$ python -m pywebcopy --testspywebcopy具有非常易於使用的命令行界面,可以幫助您完成任務,而不必擔心內心的長路。
$ python -m pywebcopy --help Usage: pywebcopy [-p|--page|-s|--site|-t|--tests] [--url=URL [,--location=LOCATION [,--name=NAME [,--pop [,--bypass_robots [,--quite [,--delay=DELAY]]]]]]]
Python library to clone/archive pages or sites from the Internet.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
--url=URL url of the entry point to be retrieved.
--location=LOCATION Location where files are to be stored.
-n NAME, --name=NAME Project name of this run.
-d DELAY, --delay=DELAY
Delay between consecutive requests to the server.
--bypass_robots Bypass the robots.txt restrictions.
--threaded Use threads for faster downloading.
-q, --quite Suppress the logging from this library.
--pop open the html page in default browser window after
finishing the task.
CLI Actions List:
Primary actions available through cli.
-p, --page Quickly saves a single page.
-s, --site Saves the complete site.
-t, --tests Runs tests for this library.
$ python -m pywebcopy run_tests在大多數時候,需要身份驗證才能訪問特定頁面。它使用pywebcopy非常易於身份驗證,因為它使用了一個requests.Session基本HTTP活動的Sessession對象,可以通過WebPage.session屬性訪問。如您所知,有大量有關通過requests.Session設置身份驗證的教程。
這是一個填充表格的示例
from pywebcopy . configs import get_config
config = get_config ( 'http://httpbin.org/' )
wp = config . create_page ()
wp . get ( config [ 'project_url' ])
form = wp . get_forms ()[ 0 ]
form . inputs [ 'email' ]. value = 'bar' # etc
form . inputs [ 'password' ]. value = 'baz' # etc
wp . submit_form ( form )
wp . get_links ()您可以在github存儲庫docs文件夾中閱讀更多信息。