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

16

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi cần lưu mã HTML của bất kỳ trang web nào trong tệp TXT, là một bài tập rất dễ dàng nhưng tôi nghi ngờ với điều này bởi vì một chức năng làm điều này:

import urllib.request

def get_html(url):
    f=open('htmlcode.txt','w')
    page=urllib.request.urlopen(url)
    pagetext=page.read() ## Save the html and later save in the file
    f.write(pagetext)
    f.close()

Nhưng điều này không hoạt động.

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

Jonrsharpe

Huy hiệu vàng 110K2525 gold badges217 silver badges400 bronze badges

hỏi ngày 19 tháng 6 năm 2014 lúc 1:05Jun 19, 2014 at 1:05

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

9

Cách dễ nhất sẽ là sử dụng URLRETRIELE:

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")

Đối với Python 3.x, mã như sau:

import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")

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

Jeril

7.1253 Huy hiệu vàng51 Huy hiệu bạc66 Huy hiệu Đồng3 gold badges51 silver badges66 bronze badges

Đã trả lời ngày 19 tháng 6 năm 2014 lúc 1:18Jun 19, 2014 at 1:18

1

Tôi sử dụng

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
3.
import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
4 - Sau khi cài đặt thư viện
import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
5 Bạn có thể lưu một trang web trong tệp TXT.
import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
4 - after install
import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
5 library you can save a webpage in txt file.

import requests

url = "https://stackoverflow.com/questions/24297257/save-html-of-some-website-in-a-txt-file-with-python"

r = requests.get(url)
with open('file.txt', 'w') as file:
    file.write(r.text)

Đã trả lời ngày 26 tháng 9 năm 2019 lúc 6:47Sep 26, 2019 at 6:47

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

SerhiiserhiiSerhii

1.0522 Huy hiệu vàng12 Huy hiệu bạc28 Huy hiệu đồng2 gold badges12 silver badges28 bronze badges

1

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'

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

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

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à

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

http://oldbaileyonline.org:80

Loại URL cơ bản nhất chỉ đơn giản là chỉ định giao thức và máy chủ. Nếu bạn cung cấp URL này cho trình duyệt của bạn, nó sẽ trả về trang chính của trang web Old Bailey Online cũ. Giả định mặc định là trang chính trong một thư mục nhất định sẽ được đặt tên chỉ mục, thường là

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
6.

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

URL cũng có thể bao gồm một số cổng tùy chọn. Không đi sâu vào quá nhiều chi tiết, giao thức mạng làm cơ sở cho việc trao đổi thông tin trên Internet cho phép máy tính kết nối theo những cách khác nhau. Số cổng được sử dụng để phân biệt các loại kết nối khác nhau này. Vì cổng mặc định cho HTTP là 80, URL sau tương đương với tải trước.

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

Đoạn trích theo sau? đại diện cho truy vấn. Bạn có thể tìm hiểu thêm về việc xây dựng các truy vấn trong việc tải xuống nhiều bản ghi bằng các chuỗi truy vấn.

Mở URL với Python

Là một nhà sử học kỹ thuật số, bạn sẽ thường thấy mình muốn sử dụng dữ liệu được lưu trong cơ sở dữ liệu học thuật trực tuyến. Để có được dữ liệu này, bạn có thể mở URL mỗi lần và sao chép và dán nội dung của chúng vào tệp văn bản hoặc bạn có thể sử dụng Python để tự động thu hoạch và xử lý các trang web. Để làm điều này, bạn sẽ cần có khả năng mở URL với các chương trình của riêng bạn. Ngôn ngữ Python bao gồm một số cách tiêu chuẩn để làm điều này.

Ví dụ, hãy để Lừa làm việc với loại tệp mà bạn có thể gặp trong khi thực hiện nghiên cứu lịch sử. Giả sử bạn quan tâm đến mối quan hệ chủng tộc ở Anh thế kỷ thứ mười tám. Old Bailey Online trực tuyến (OBO) là một nguồn tài nguyên phong phú cung cấp bảng điểm thử nghiệm từ năm 1674 đến 1913 và là một nơi tốt để tìm kiếm các nguồn.

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

Trang chủ trực tuyến Old Bailey

Ví dụ này, chúng tôi sẽ sử dụng bảng điểm thử nghiệm của Benjamin Bowsey, một người da đen, người bị kết án phá vỡ hòa bình trong cuộc bạo loạn Gordon năm 1780.

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ừ

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
7 đến
import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
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 as html in python? - làm cách nào để lưu một trang web dưới dạng html 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

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
9. Khi bạn thực hiện chương trình, nó sẽ
import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
0 Tệp dùng thử,
import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
1 Nội dung của nó thành chuỗi python có tên WebContent và sau đó
import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
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
import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
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à
import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
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.)

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
0

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

import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
5, được lưu trữ trong mô -đun Python có tên
import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
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

import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
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:

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
1

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

import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
8 và thực hiện nó. Sử dụng lệnh
import urllib.request    
urllib.request.urlretrieve("http://www.example.com/test.html", "test.txt")
9 trong Firefox, hãy mở tệp trên ổ cứng của bạn mà nó tạo (
import requests

url = "https://stackoverflow.com/questions/24297257/save-html-of-some-website-in-a-txt-file-with-python"

r = requests.get(url)
with open('file.txt', 'w') as file:
    file.write(r.text)
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.

import urllib

urllib.urlretrieve("http://www.example.com/test.html", "test.txt")
2

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 một trang dưới dạng HTML trong Python?

Làm thế nào để lưu trang HTML trong mã Python..
Nhập Urllib.Yêu cầu, Urllib.Lỗi, Urllib.phân tích cú pháp ..
url = "URL của trang bạn muốn tải xuống".
Phản hồi = Urllib.lời yêu cầu.Urlopen (URL).

Làm cách nào để lưu trang web dưới dạng tệp HTML?

Nhấn Ctrl+s.Nhấp chuột phải vào tài liệu HTML, nhấp vào Tệp> Lưu.Right-click within the HTML document, click File > Save.

Làm cách nào để lấy mã HTML cho một trang web bằng Python?

Làm thế nào để có được URL mẫu tệp HTML trong Python..
Gọi chức năng đọc trên biến Weburl ..
Biến đọc cho phép đọc nội dung của các tệp dữ liệu ..
Đọc toàn bộ nội dung của URL thành một biến có tên là Dữ liệu ..
Chạy mã- nó sẽ in dữ liệu vào định dạng HTML ..

Làm cách nào để lưu một trang web trong Python?

Để lưu một trang, trước tiên chúng tôi sẽ có được nguồn trang phía sau trang web với sự trợ giúp của phương thức trang_source.Chúng tôi sẽ mở một tệp với một mã hóa cụ thể với các codec.Phương pháp mở.Tệp phải được mở trong chế độ ghi được biểu thị bằng W và loại mã hóa là UTF 8.obtain the page source behind the webpage with the help of the page_source method. We shall open a file with a particular encoding with the codecs. open method. The file has to be opened in the write mode represented by w and encoding type as utf−8.