____ _ __ __ ______ _____
/ __ __ _| | / /__ / /_ / ____/___ ____ __ __ /__ /
/ /_/ / / / / | /| / / _ / __ / / / __ / __ / / / / / /
/ ____/ /_/ /| |/ |/ / __/ /_/ / /___/ /_/ / /_/ / /_/ / / /
/_/ __, / |__/|__/___/_.___/____/____/ .___/__, / /_/
/____/ /_/ /____/
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 --tests pywebcopy มีอินเทอร์เฟซบรรทัดคำสั่งที่ใช้งานง่ายมากซึ่งสามารถช่วยให้คุณทำงานได้โดยไม่ต้องกังวลเกี่ยวกับทางด้านในยาว
$ 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 ต์ SESSION สำหรับกิจกรรม HTTP พื้นฐานซึ่งสามารถเข้าถึงได้ผ่าน 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 () คุณสามารถอ่านเพิ่มเติมได้ในโฟลเดอร์ docs GitHub