Hướng dẫn how do i save a webpage in python? - làm cách nào để lưu một trang web trong python?

1) Tải xuống và đọc dòng trang web từng dòng

# Python3

Nhập Urllib.Requesturllib.request

fid=urllib.request.urlopen('http://www.example.org/')urllib.request.urlopen('http://www.example.org/')

webpage=fid.read().decode('utf-8').decode('utf-8')

print(webpage)

# Python2

Nhập Urllib

fid=urllib.urlopen('http://www.example.org/')urllib.urlopen('http://www.example.org/')

webpage=fid.read()

print(webpage)

# Lỗi

AttributionError: 'Mô -đun' đối tượng không có thuộc tính 'Yêu cầu' / 'Urlopen'

→ Không phù hợp của mã Python phiên bản 2 so với 3.

# in từng dòng

Đối với dòng trong trang web.split ('\ n'):split('\n'):

in (dòng)

# Trích xuất tiêu đề trang web

Đối với dòng trong trang web.split ('\ n'):split('\n'):

in (dòng)

# Trích xuất tiêu đề trang web

Nếu '' xếp hàng:

pagetitle = line.split ('') [1] .split ('') [0]Example Domain'

In (Pagetitle)

'Miền ví dụ'

Nhập Urllib.Request

# Python2('http://www.example.org/', 'webpage.html')

Nhập Urllib

# Lỗiwebpage.html'):

AttributionError: 'Mô -đun' đối tượng không có thuộc tính 'Yêu cầu' / 'Urlopen'

Hãy thử saveFullHtmlPage('https://www.google.com', 'google') 1 dưới đây hoặc điều chỉnh nó.

Sẽ lưu một sửa đổi *.html và lưu javascripts, css và hình ảnh dựa trên tập lệnh thẻ, liên kết và IMG (TAGS_INNER DIENS TÍNH NĂNG) trên thư mục

saveFullHtmlPage('https://www.google.com', 'google')
2.

import os, sys, re
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup

def saveFullHtmlPage(url, pagepath='page', session=requests.Session(), html=None):
    """Save web page html and supported contents        
        * pagepath : path-to-page   
        It will create a file  `'path-to-page'.html` and a folder `'path-to-page'_files`
    """
    def savenRename(soup, pagefolder, session, url, tag, inner):
        if not os.path.exists(pagefolder): # create only once
            os.mkdir(pagefolder)
        for res in soup.findAll(tag):   # images, css, etc..
            if res.has_attr(inner): # check inner tag (file object) MUST exists  
                try:
                    filename, ext = os.path.splitext(os.path.basename(res[inner])) # get name and extension
                    filename = re.sub('\W+', '', filename) + ext # clean special chars from name
                    fileurl = urljoin(url, res.get(inner))
                    filepath = os.path.join(pagefolder, filename)
                    # rename html ref so can move html and folder of files anywhere
                    res[inner] = os.path.join(os.path.basename(pagefolder), filename)
                    if not os.path.isfile(filepath): # was not downloaded
                        with open(filepath, 'wb') as file:
                            filebin = session.get(fileurl)
                            file.write(filebin.content)
                except Exception as exc:
                    print(exc, file=sys.stderr)
    if not html:
        html = session.get(url).text
    soup = BeautifulSoup(html, "html.parser")
    path, _ = os.path.splitext(pagepath)
    pagefolder = path+'_files' # page contents folder
    tags_inner = {'img': 'src', 'link': 'href', 'script': 'src'} # tag&inner tags to grab
    for tag, inner in tags_inner.items(): # saves resource files and rename refs
        savenRename(soup, pagefolder, session, url, tag, inner)
    with open(path+'.html', 'wb') as file: # saves modified html doc
        file.write(soup.prettify('utf-8'))

Ví dụ lưu

saveFullHtmlPage('https://www.google.com', 'google')
3 dưới dạng
saveFullHtmlPage('https://www.google.com', 'google')
4 và nội dung trên thư mục
saveFullHtmlPage('https://www.google.com', 'google')
5. (thư mục hiện tại)
saving
saveFullHtmlPage('https://www.google.com', 'google')
3 as
saveFullHtmlPage('https://www.google.com', 'google')
4 and contents on
saveFullHtmlPage('https://www.google.com', 'google')
5 folder. (current folder)

saveFullHtmlPage('https://www.google.com', 'google')

Nội dung

  • Mục tiêu bài học
    • Về URL
  • Mở URL với Python
  • Lưu một bản sao cục bộ của một trang web
  • Bài đọc đề xuất
    • Đồng bộ hóa mã

Mục tiêu bài học

Về URL

Về URL

Mở URL với Python

protocol://host:port/path?query

Lưu một bản sao cục bộ của một trang web

http://oldbaileyonline.org

Bài đọc đề xuất

Đồng bộ hóa mã

http://oldbaileyonline.org:80

Bài học này giới thiệu các trình định vị tài nguyên thống nhất (URL) và giải thích cách sử dụng Python để tải xuống và lưu nội dung của trang web vào ổ cứng cục bộ của bạn.

http://oldbaileyonline.org/static/Project.jsp

Một trang web là một tệp được lưu trữ trên một máy tính khác, một máy được gọi là máy chủ web. Khi bạn đi đến một trang web, điều thực sự xảy ra là máy tính của bạn, (máy khách) gửi yêu cầu đến máy chủ (máy chủ) qua mạng và máy chủ trả lời bằng cách gửi lại một bản sao của trang cho máy của bạn. Một cách để đến một trang web với trình duyệt của bạn là theo một liên kết từ một nơi khác. Tất nhiên, bạn cũng có khả năng dán hoặc nhập Trình định vị tài nguyên thống nhất (URL) trực tiếp vào trình duyệt của bạn. URL cho biết trình duyệt của bạn nơi tìm tài nguyên trực tuyến bằng cách chỉ định máy chủ, thư mục và tên của tệp sẽ được truy xuất, cũng như loại giao thức mà máy chủ và trình duyệt của bạn sẽ đồng ý sử dụng trong khi trao đổi thông tin (như HTTP, Giao thức chuyển siêu văn bản). Cấu trúc cơ bản của URL là

https://www.oldbaileyonline.org/search.jsp?form=searchHomePage&_divs_fulltext=arsenic&kwparse=and&_persNames_surname=&_persNames_given=&_persNames_alias=&_offences_offenceCategory_offenceSubcategory=&_verdicts_verdictCategory_verdictSubcategory=&_punishments_punishmentCategory_punishmentSubcategory=&_divs_div0Type_div1Type=&fromMonth=&fromYear=&toMonth=&toYear=&ref=&submit.x=0&submit.y=0

Hãy cùng nhìn vào một vài ví dụ.

Mở URL với Python

Lưu một bản sao cục bộ của một trang web

Bài đọc đề xuất

Hướng dẫn how do i save a webpage in python? - làm cách nào để lưu một trang web trong python?

Đồng bộ hóa mã

Bài học này giới thiệu các trình định vị tài nguyên thống nhất (URL) và giải thích cách sử dụng Python để tải xuống và lưu nội dung của trang web vào ổ cứng cục bộ của bạn.

http://www.oldbaileyonline.org/browse.jsp?id=t17800628-33&div=t17800628-33

Bằng cách nghiên cứu URL, chúng ta có thể học một vài điều. Đầu tiên, OBO được viết bằng JSP (trang Javaserver, ngôn ngữ lập trình web xuất ra HTML) và nó có thể truy xuất các mục thử nghiệm riêng lẻ bằng cách sử dụng chuỗi truy vấn. Mỗi cái rõ ràng được cung cấp một số ID duy nhất (id = t trong URL), được xây dựng từ ngày của phiên dùng thử ở định dạng (yyyymmdd) và số thử nghiệm từ trong phiên tòa đó, trong trường hợp này: 33. Nếu bạn thay đổi Hai trường hợp từ

saveFullHtmlPage('https://www.google.com', 'google')
7 đến
saveFullHtmlPage('https://www.google.com', 'google')
8 trong trình duyệt của bạn và nhấn Enter, bạn nên được đưa đến thử nghiệm tiếp theo. Thật không may, không phải tất cả các trang web đều có URL có thể đọc được và đáng tin cậy như vậy.

Hướng dẫn how do i save a webpage in python? - làm cách nào để lưu một trang web trong python?

Trang bảng điểm dùng thử của Benjamin Bowsey, 1780

Dành một vài phút để xem trang dùng thử Benjamin Bowsey. Ở đây chúng tôi không quan tâm nhiều đến những gì bảng điểm nói, nhưng những tính năng của trang. Lưu ý xem xem liên kết XML ở phía dưới sẽ đưa bạn đến một phiên bản được đánh dấu rất nhiều của văn bản có thể hữu ích cho một số loại nghiên cứu nhất định. Bạn cũng có thể xem xét quét tài liệu gốc, được phiên âm để tạo tài nguyên này.

Bây giờ, hãy để thử mở trang bằng Python. Sao chép chương trình sau vào Chỉnh sửa Komodo và lưu nó dưới dạng

saveFullHtmlPage('https://www.google.com', 'google')
9. Khi bạn thực hiện chương trình, nó sẽ
protocol://host:port/path?query
0 Tệp dùng thử,
protocol://host:port/path?query
1 Nội dung của nó thành chuỗi python có tên WebContent và sau đó
protocol://host:port/path?query
2 ba trăm ký tự đầu tiên của chuỗi vào khung đầu ra của lệnh. Sử dụng lệnh
protocol://host:port/path?query
3 trong Firefox để xác minh rằng nguồn HTML của trang giống như nguồn mà chương trình của bạn đã truy xuất. Mỗi trình duyệt có một phím tắt khác nhau để mở nguồn trang. Trong Firefox trên PC, đó là
protocol://host:port/path?query
4. Nếu bạn không thể tìm thấy nó trên trình duyệt của mình, hãy thử sử dụng công cụ tìm kiếm để tìm nó ở đâu. (Xem tham chiếu thư viện Python để tìm hiểu thêm về Urllib.)

________số 8

Năm dòng mã này đạt được rất nhiều rất nhanh. Hãy để chúng tôi dành một chút thời gian để đảm bảo rằng mọi thứ đều rõ ràng và bạn có thể nhận ra các khối xây dựng cho phép chúng tôi làm cho chương trình này làm những gì chúng tôi muốn nó làm.

URL, phản hồi và webcontent là tất cả các biến mà chúng tôi đã tự đặt tên.

URL giữ URL của trang web mà chúng tôi muốn tải xuống. Trong trường hợp này, đây là phiên tòa của Benjamin Bowsey.

Trên dòng sau, chúng tôi gọi hàm

protocol://host:port/path?query
5, được lưu trữ trong mô -đun Python có tên
protocol://host:port/path?query
6 và chúng tôi đã yêu cầu chức năng đó mở trang web được tìm thấy tại URL mà chúng tôi vừa chỉ định. Sau đó, chúng tôi đã lưu kết quả của quá trình đó vào một biến có tên là phản hồi. Biến đó hiện chứa một phiên bản mở của trang web được yêu cầu.

Sau đó, chúng tôi sử dụng phương thức

protocol://host:port/path?query
1 mà chúng tôi đã sử dụng trước đó, để sao chép nội dung của trang web mở đó vào một biến mới có tên WebContent.

Hãy chắc chắn rằng bạn có thể chọn ra các biến (có 3 trong số chúng), các mô -đun (1), các phương thức (2) và các tham số (1) trước khi bạn tiếp tục.

Trong đầu ra kết quả, bạn sẽ nhận thấy một chút đánh dấu HTML:


 xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

	</span>Browse - Central Criminal Court<span>
	 http-equiv="content-type" content=

Nội dung của bản thân thử nghiệm ở xa hơn nhiều trên trang. Những gì chúng ta thấy ở đây là mã HTML ở đầu tài liệu. Đây không hoàn toàn là những gì chúng ta cần cho nghiên cứu lịch sử, nhưng đừng lo lắng; Bạn sẽ sớm học cách xóa đánh dấu dư thừa đó và nhận được nội dung bạn đang theo đuổi.

Lưu một bản sao cục bộ của một trang web

Đưa ra những gì bạn đã biết về việc viết vào các tệp, thật dễ dàng để sửa đổi chương trình trên để nó ghi nội dung của chuỗi webcontent vào một tệp cục bộ trên máy tính của chúng tôi thay vì vào khung đầu ra lệnh của Cameron. Sao chép chương trình sau vào Chỉnh sửa Komodo, lưu nó dưới dạng

protocol://host:port/path?query
8 và thực hiện nó. Sử dụng lệnh
protocol://host:port/path?query
9 trong Firefox, hãy mở tệp trên ổ cứng của bạn mà nó tạo (
http://oldbaileyonline.org
0) để xác nhận rằng bản sao đã lưu của bạn giống như bản sao trực tuyến.

saveFullHtmlPage('https://www.google.com', 'google')
0

Vì vậy, nếu bạn có thể lưu một tệp duy nhất một cách dễ dàng, bạn có thể viết một chương trình để tải xuống một loạt các tệp không? Ví dụ, bạn có thể bước qua ID dùng thử, và tạo ra các bản sao của riêng bạn của một nhóm chúng không? Chuẩn rồi. Bạn có thể tìm hiểu cách thực hiện điều đó trong việc tải xuống nhiều tệp bằng các chuỗi truy vấn mà chúng tôi khuyên bạn nên hoàn thành các bài học giới thiệu trong loạt bài này.

Bài đọc đề xuất

  • Lutz, Mark. “Ch. 4: Giới thiệu các loại đối tượng Python, học Python (O hèReilly, 1999).

Đồng bộ hóa mã

Để làm theo cùng với các bài học trong tương lai, điều quan trọng là bạn có các tệp và chương trình phù hợp trong thư mục lập trình của bạn. Khi kết thúc mỗi bài học, bạn có thể tải xuống tệp ZIP lập trình-Historian Hitming-Historian để đảm bảo bạn có mã chính xác.

  • Lập trình-Historian-1 (ZIP)

Làm cách nào để lưu toàn bộ trang web?

Bạn cần phải trực tuyến để lưu một trang ...
Trên máy tính của bạn, mở chrome ..
Chuyển đến một trang bạn muốn lưu ..
Ở phía trên bên phải, nhấp vào nhiều công cụ hơn. Lưu trang dưới dạng ..
Chọn nơi bạn muốn lưu trang ..
Nhấp vào để lưu..

Làm cách nào để lưu tệp HTML trong Python?

Sử dụng Open () và File.Write () để ghi vào tệp HTML Sử dụng Mở (tệp, chế độ) với chế độ là "W" để tạo tệp tệp HTML mới hoặc ghi vào một tệp hiện có.Sử dụng tệp.Viết (dữ liệu) để ghi dữ liệu vào tệp. write() to write to an HTML file Use open(file, mode) with mode as "w" to create a new HTML file file or write to an existing one. Use file. write(data) to write data to the file .

Làm cách nào để lưu một trang web dưới dạng PDF trong Python?

Chuyển đổi trang web sang PDF bằng Python..
Nhập pdfkit ..
Đường dẫn #Define đến wkhtmltopdf.exe ..
PATH_TO_WKHTMLTOPDF = R'C: \ Tệp chương trình \ wkhtmltopdf \ bin \ wkhtmltopdf.exe '.
#Define URL ..
url = 'https://wkhtmltopdf.org/'.
#Point PDFKit Cấu hình thành wkhtmltopdf.exe ..
config = pdfkit.....
#Convert trang web đến PDF ..

Bạn có thể viết các trang web trong Python không?

Ngôn ngữ lập trình Python có thể được sử dụng để tạo ra rất nhiều loại thứ khác nhau, bao gồm cả các trang web.Làm cho các trang web có Python dễ dàng hơn hầu hết mọi người nghĩ vì thực tế là ngôn ngữ này sử dụng một thứ gọi là khung.. Making websites with Python is easier than most people think because of the fact that this language makes use of something called “frameworks.”