Nội dung
- Mục tiêu bài học
- Các tệp cần thiết cho bài học này
- Xây dựng trình bao bọc HTML
- metadata
- Định dạng chuỗi Python
- Tệp dữ liệu tự ghi chép
- Hướng dẫn Mac
- Hướng dẫn Windows
- Để tất cả chúng cùng nhau
- Bài đọc đề xuất
- Đồng bộ hóa mã
Mục tiêu bài học
Bài học này lấy các cặp tần số được tạo trong việc đếm tần số và xuất chúng vào một tệp HTML.
Ở đâ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 gốc theo thứ tự tần số giảm dần, cùng với số lần mỗi từ khóa xuất hiện.
Các tệp cần thiết cho bài học này
obo.py
Xây dựng trình bao bọc HTML
Xây dựng trình bao bọc HTML
metadata
Định dạng chuỗi Python
Tệp dữ liệu tự ghi chép
Định dạng chuỗi Python
Tệp dữ liệu tự ghi chép
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
Hướng dẫn Mac
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
Hướng dẫn Windows
Tệp dữ liệu tự ghi chép
Hướng dẫn Mac
# 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
Hướng dẫn Windows
Hướng dẫn Mac
Nếu bạn đang sử dụng máy Mac, hãy đảm bảo bạn bao gồm đường dẫn tệp thích hợp trong biến tên tệp trên dòng cuối cùng thứ 2 để phản ánh nơi bạn 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 Windows
# 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 chức năng 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 rắc rối 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 cách thức hoạt động của nó. Nếu bạn vẫn bị mắc kẹt, hãy xem
URL: //www.oldbaileyonline.org/browse.jsp?id=t17800628-33&div=t17800628-33
Trong tệp HTML và truy tìm 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
3 để xác định thời gian và ngày hiện tại. Giống như toán tử định dạng chuỗi %s
, 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
5 làm 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
6 đại diện cho năm, tháng, ngày, giờ, phút và thứ hai tương ứng. Không giống như %s
, chương trình sẽ xác định giá trị của các biến này cho bạn bằng đồng hồ 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 được gọi là 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 với tiện ích mở rộ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
8 chứ không phải 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
9.Để tất cả chúng cùng nhau
Bây giờ chúng tôi có thể tạo một phiên bản khác của chương trình của chúng tôi để tính toán tần số. Thay vì gửi đầu ra của nó đến một tệp văn bản hoặc cửa sổ đầu ra, nó sẽ gửi đầu ra đến 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 như các mục thư mục cho Zotero. Nhập hoặc sao chép 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
# 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 và thực thi nó, để xác nhận rằng nó hoạt động như mong đợi.Sử dụng obo.wrapstringinhtmlmac [] hoặc obo.wrapstringinhtmlwindows [] khi phù hợp với hệ thống của bạn.
# html-to-freq-3.py
import obo
# create sorted dictionary of word-frequency pairs
url = '//www.oldbaileyonline.org/browse.jsp?id=t17800628-33&div=t17800628-33'
text = obo.webPageToText[url]
fullwordlist = obo.stripNonAlphaNum[text]
wordlist = obo.removeStopwords[fullwordlist, obo.stopwords]
dictionary = obo.wordListToFreqDict[wordlist]
sorteddict = obo.sortFreqDict[dictionary]
# compile dictionary into string and wrap with HTML
outstring = ""
for s in sorteddict:
outstring += str[s]
outstring += "
"
obo.wrapStringInHTMLMac["html-to-freq-3", url, outstring]
Lưu ý rằng chúng tôi đã xen kẽ các cặp tần số từ với thẻ HTML Break
# 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
1, 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 cuối, lần này trong cửa sổ trình duyệt của bạn.Bài đọc đề xuất
- Lutz, học Python
- Đọc lại và xem xét chs. 1-17
Đồ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. Ở cuối mỗi chương, 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. Nếu bạn đang theo dõi cùng với phiên bản MAC/Linux, bạn có thể phải mở tệp obo.py
và thay đổi tệp: /// người dùng/tên người dùng/máy tính để bàn/lập trình-historian/ra đường dẫn đến thư mục trên máy tính của riêng bạn.
- Python-irssons7.zip Zip Sync