Làm cách nào để truy cập dữ liệu HTML trong Python?

Bài học này lấy các cặp tần số được tạo trong Counting Frequencies và xuất chúng thành một tệp HTML

Tại đây, bạn sẽ tìm hiểu cách xuất dữ liệu dưới dạng tệp HTML bằng Python. Bạn cũng sẽ tìm hiểu về định dạng chuỗi. Kết quả cuối cùng là một tệp HTML hiển thị các từ khóa được tìm thấy trong nguồn ban đầu theo thứ tự tần suất giảm dần, cùng với số lần mỗi từ khóa xuất hiện

Tệp cần thiết cho bài học này

Nếu bạn không có các tệp này từ bài học trước, bạn có thể tải xuống tệp lập trình-historian-6, một tệp zip từ bài học trước

Xây dựng trình bao bọc HTML

Trong bài học trước, bạn đã học cách nhúng thông báo “Xin chào thế giới. ” trong các thẻ HTML, ghi kết quả vào tệp và tự động mở tệp đó trong trình duyệt. Một chương trình đặt mã định dạng xung quanh một thứ gì đó để chương trình khác có thể sử dụng nó đôi khi được gọi là trình bao bọc. Những gì chúng ta sẽ làm bây giờ là phát triển một trình bao bọc HTML cho đầu ra của mã để tính toán tần số từ. Chúng tôi cũng sẽ thêm một số siêu dữ liệu động, hữu ích để bổ sung cho dữ liệu tần suất được thu thập trong Tần số đếm

Sự khác biệt giữa dữ liệu và siêu dữ liệu là rất quan trọng đối với khoa học thông tin. Siêu dữ liệu là dữ liệu về dữ liệu. Khái niệm này chắc hẳn đã rất quen thuộc với bạn, ngay cả khi bạn chưa từng nghe đến thuật ngữ này trước đây. Xem xét một cuốn sách truyền thống. Nếu chúng ta coi văn bản của cuốn sách là dữ liệu, thì có một số đặc điểm khác được liên kết với văn bản đó, nhưng có thể được in hoặc không rõ ràng trong cuốn sách. Tên tác phẩm, tác giả, nhà xuất bản, địa điểm và ngày xuất bản là siêu dữ liệu thường được in trong tác phẩm. Nơi và ngày viết, tên của người chỉnh sửa bản sao, dữ liệu biên mục của Thư viện Quốc hội và tên của phông chữ được sử dụng để sắp chữ cuốn sách đôi khi được in trong đó. Người đã mua một bản sao cụ thể có thể hoặc không thể viết tên của họ trong cuốn sách. Nếu sách thuộc bộ sưu tập của thư viện, thư viện đó sẽ giữ siêu dữ liệu bổ sung, chỉ một số siêu dữ liệu sẽ được đính kèm vật lý vào sách. Ví dụ, hồ sơ mượn sách thường được lưu giữ trong một số loại cơ sở dữ liệu và được liên kết với cuốn sách bằng một mã định danh duy nhất. Các thư viện, kho lưu trữ và bảo tàng đều có các hệ thống phức tạp để tạo và theo dõi siêu dữ liệu

Khi bạn đang làm việc với dữ liệu kỹ thuật số, bạn nên kết hợp siêu dữ liệu vào các tệp của riêng mình bất cứ khi nào có thể. Bây giờ chúng ta sẽ phát triển một vài chiến lược cơ bản để làm cho các tệp dữ liệu của chúng ta tự ghi lại. Trong trình bao bọc của chúng tôi, chúng tôi muốn bao gồm thông tin động về tệp, chẳng hạn như thời gian và ngày tệp được tạo, cũng như tiêu đề HTML có liên quan đến tệp. Trong trường hợp này, chúng ta có thể tự đặt tên cho nó, nhưng khi chúng ta bắt đầu làm việc với nhiều tệp, việc tự động tạo các tệp tự ghi sẽ tiết kiệm rất nhiều thời gian, vì vậy chúng ta sẽ thực hành ngay bây giờ. Và để làm được điều đó, chúng ta sẽ phải học cách tận dụng một vài tùy chọn định dạng chuỗi mạnh mẽ hơn

Định dạng chuỗi Python

Python bao gồm một toán tử định dạng đặc biệt cho phép bạn chèn một chuỗi vào một chuỗi khác. Nó được biểu thị bằng dấu phần trăm theo sau là chữ “s”. Mở trình bao Python và thử các ví dụ sau


frame = 'This fruit is a %s'
print[frame]
-> This fruit is a %s

print[frame % 'banana']
-> This fruit is a banana

print[frame % 'pear']
-> This fruit is a pear

Ngoài ra còn có một biểu mẫu cho phép bạn nội suy một danh sách các chuỗi thành một chuỗi khác


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears

Trong những ví dụ này, một


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
7 trong một chuỗi cho biết rằng một chuỗi khác sẽ được nhúng vào thời điểm đó. Có nhiều mã định dạng chuỗi khác, hầu hết các mã này cho phép bạn nhúng các số vào chuỗi ở nhiều định dạng khác nhau, chẳng hạn như

frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
8 cho số nguyên [ví dụ:. 1, 2, 3],

frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
9 cho số thập phân có dấu phẩy động [ví dụ:. 3. 023, 4. 59, 1. 0], v.v. Sử dụng phương pháp này, chúng tôi có thể nhập thông tin duy nhất cho tệp

Tệp dữ liệu tự ghi

Hãy gộp một số mã mà chúng ta đã viết vào các hàm. Một trong số này sẽ lấy một URL và trả về một chuỗi văn bản chữ thường từ trang web. Sao chép mã này vào mô-đun


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
0

# Given a URL, return string of lowercase text from page.

def webPageToText[url]:
    import urllib.request, urllib.error, urllib.parse
    response = urllib.request.urlopen[url]
    html = response.read[].decode['UTF-8']
    text = stripTags[html].lower[]
    return text

Chúng tôi cũng sẽ muốn một chức năng nhận một chuỗi thuộc bất kỳ loại nào và biến nó thành phần thân của tệp HTML được mở tự động trong Firefox. Hàm này phải bao gồm một số siêu dữ liệu cơ bản, như ngày giờ tạo và tên của chương trình đã tạo hàm này. Nghiên cứu đoạn mã sau một cách cẩn thận, sau đó sao chép nó vào mô-đun


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
0

Hướng dẫn Mac

Nếu bạn đang sử dụng máy Mac, hãy đảm bảo rằng bạn đã bao gồm đường dẫn tệp thích hợp trong biến tên tệp ở dòng cuối cùng thứ 2 để phản ánh nơi bạn đang lưu tệp của mình

# Given name of calling program, a url and a string to wrap,
# output string in html body with basic metadata and open in Firefox tab.

def wrapStringInHTMLMac[program, url, body]:
    import datetime
    from webbrowser import open_new_tab

    now = datetime.datetime.today[].strftime["%Y%m%d-%H%M%S"]
    filename = program + '.html'
    f = open[filename,'w']

    wrapper = """
    
    %s output - %s
    
    

URL: %s

%s

""" whole = wrapper % [program, now, url, url, body] f.write[whole] f.close[] #Change the filepath variable below to match the location of your directory filename = 'file:///Users/username/Desktop/programming-historian/' + filename open_new_tab[filename]

hướng dẫn cửa sổ

# Given name of calling program, a url and a string to wrap,
# output string in html body with basic metadata
# and open in Firefox tab.

def wrapStringInHTMLWindows[program, url, body]:
    import datetime
    from webbrowser import open_new_tab

    now = datetime.datetime.today[].strftime["%Y%m%d-%H%M%S"]

    filename = program + '.html'
    f = open[filename,'w']

    wrapper = """
    
    %s output - %s
    
    

URL: %s

%s

""" whole = wrapper % [program, now, url, url, body] f.write[whole] f.close[] open_new_tab[filename]

***

Lưu ý rằng hàm này sử dụng toán tử định dạng chuỗi mà chúng ta vừa học. Nếu bạn vẫn gặp sự cố với ý tưởng này, hãy xem tệp HTML đã mở trong tab Firefox mới của bạn và bạn sẽ thấy nó hoạt động như thế nào. Nếu bạn vẫn gặp khó khăn, hãy xem

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

trong tệp HTML và theo dõi lại cách chương trình biết đặt giá trị URL ở đó

Hàm này cũng gọi thư viện Python


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
2 để xác định ngày giờ hiện tại. Giống như toán tử định dạng chuỗi

frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
7, thư viện này sử dụng

frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
4 để thay thế cho các giá trị. Trong trường hợp này,

frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
5 tương ứng là năm, tháng, ngày, giờ, phút và giây. Không giống như

frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
7, chương trình sẽ xác định giá trị của các biến này cho bạn bằng cách sử dụng đồng hồ trên máy tính của bạn. Điều quan trọng là phải nhận ra sự khác biệt này

Siêu dữ liệu ngày này, cùng với tên của chương trình đã gọi hàm, được lưu trữ trong thẻ tiêu đề HTML. Tệp HTML được tạo có cùng tên với chương trình Python tạo ra nó, nhưng có phần mở rộng là


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
7 thay vì phần mở rộng là

frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
8

Để tất cả chúng cùng nhau

Bây giờ chúng ta có thể tạo một phiên bản khác của chương trình để tính tần số. Thay vì gửi đầu ra của nó tới tệp văn bản hoặc cửa sổ đầu ra, nó sẽ gửi đầu ra tới tệp HTML được mở trong tab Firefox mới. Từ đó, đầu ra của chương trình có thể được thêm dễ dàng dưới dạng mục nhập thư mục vào Zotero. Nhập hoặc sao chép đoạn mã sau vào trình soạn thảo văn bản của bạn, lưu nó dưới dạng


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
9 và thực thi nó để xác nhận rằng nó hoạt động như mong đợi

Sử dụng một trong hai obo. wrapStringInHTMLMac[] hoặc obo. wrapStringInHTMLWindows[] phù hợp với hệ thống của bạn


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
4

Lưu ý rằng chúng tôi đã xen kẽ các cặp tần số từ của mình với thẻ ngắt HTML

# Given a URL, return string of lowercase text from page.

def webPageToText[url]:
    import urllib.request, urllib.error, urllib.parse
    response = urllib.request.urlopen[url]
    html = response.read[].decode['UTF-8']
    text = stripTags[html].lower[]
    return text
0, hoạt động như một dòng mới. Nếu mọi việc suôn sẻ, bạn sẽ thấy cùng một tần số từ mà bạn đã tính toán trong phần trước, lần này là trong cửa sổ trình duyệt của bạn

Bài đọc được đề xuất

  • Lutz, Học Python
    • Đọc lại và xem xét Chs. 1-17

Đồng bộ hóa mã

Để theo dõi các bài học trong tương lai, điều quan trọng là bạn phải có các tệp và chương trình phù hợp trong thư mục “lập trình-lịch sử” của mình. Ở cuối mỗi chương, bạn có thể tải xuống tệp zip “lập trình-lịch sử” để đảm bảo bạn có mã chính xác. Nếu bạn đang theo dõi phiên bản Mac / Linux, bạn có thể phải mở tệp


frame2 = 'These are %s, those are %s'
print[frame2]
-> These are %s, those are %s

print[frame2 % ['bananas', 'pears']]
-> These are bananas, those are pears
0 và thay đổi “tệp. ///Users/username/Desktop/programming-historian/” đến đường dẫn đến thư mục trên máy tính của bạn

Làm cách nào để đọc dữ liệu HTML trong Python?

Cài đặt BeautifulSoup. Sử dụng trình quản lý gói Anaconda để cài đặt gói cần thiết và các gói phụ thuộc của nó. .
Đọc tệp HTML. Trong ví dụ dưới đây, chúng tôi yêu cầu một url được tải vào môi trường python. .
Trích xuất giá trị thẻ. .
Trích xuất tất cả các thẻ

Làm cách nào để trích xuất dữ liệu bảng HTML bằng Python?

Để trích xuất một bảng từ HTML, trước tiên bạn cần mở các công cụ dành cho nhà phát triển của mình để xem HTML trông như thế nào và xác minh xem đó có thực sự là một bảng chứ không phải một phần tử nào khác không. Bạn mở công cụ dành cho nhà phát triển bằng phím F12, xem tab “Thành phần” và đánh dấu thành phần bạn quan tâm .

Làm cách nào để kết nối HTML với Python?

HTML và CSS dành cho nhà phát triển Python .
Tạo tệp HTML đầu tiên của bạn. Tài liệu HTML. Khoảng trắng và định dạng văn bản. .
Tạo kiểu cho nội dung của bạn bằng CSS. Thêm màu sắc cho trang web của bạn. Thay đổi phông chữ. .
Xử lý HTML với Python. Lập trình viết HTML. .
Tiếp tục với HTML và CSS trong Python. JavaScript. .
Phần kết luận

Làm cách nào để mở tệp HTML bằng Python?

Làm cách nào để đọc và ghi tệp HTML bằng Python? . Use open[] and file. write[] để ghi vào tệp HTML Sử dụng open[file, mode] với chế độ là "w" để tạo tệp tệp HTML mới hoặc ghi vào . sử dụng tập tin.

Chủ Đề