Python實(shí)現(xiàn)輕松獲取網(wǎng)頁(yè)數(shù)據(jù)并解析
前言:數(shù)據(jù)世界的“魔法”之門
在這個(gè)信息爆炸的時(shí)代,數(shù)據(jù)無處不在。從商品價(jià)格到新聞?lì)^條,從天氣預(yù)報(bào)到社交媒體動(dòng)態(tài),海量數(shù)據(jù)蘊(yùn)藏著巨大的價(jià)值。然而,這些數(shù)據(jù)往往散落在互聯(lián)網(wǎng)的各個(gè)角落,以非結(jié)構(gòu)化的網(wǎng)頁(yè)形式呈現(xiàn)。如何高效、自動(dòng)化地獲取這些數(shù)據(jù)呢?答案就是——網(wǎng)絡(luò)爬蟲 (Web Crawler)。
網(wǎng)絡(luò)爬蟲,顧名思義,就像一只勤勞的蜘蛛,在互聯(lián)網(wǎng)這張巨大的“網(wǎng)”上爬行,根據(jù)你設(shè)定的規(guī)則,抓取并收集所需的信息。它能幫你省去大量手動(dòng)復(fù)制粘貼的時(shí)間,將網(wǎng)頁(yè)上的“非結(jié)構(gòu)化”數(shù)據(jù)轉(zhuǎn)化為你可以分析、利用的“結(jié)構(gòu)化”數(shù)據(jù)。
本篇博客將作為你進(jìn)入爬蟲世界的第一站。我們將使用 Python 這一強(qiáng)大且易學(xué)的語言,手把手教你編寫一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲,即使你是編程小白,也能輕松掌握數(shù)據(jù)抓取的樂趣。
準(zhǔn)備工作:你的工具箱
在開始編寫爬蟲之前,我們需要確保你的開發(fā)環(huán)境已經(jīng)準(zhǔn)備就緒。
1. 安裝 Python
如果你還沒有安裝 Python,請(qǐng)?jiān)L問 Python 官方網(wǎng)站 下載并安裝最新版本的 Python 3.x。安裝時(shí),請(qǐng)務(wù)必勾選“Add Python to PATH”選項(xiàng),這樣你就可以在命令行中直接運(yùn)行 Python 了。
2. 學(xué)習(xí)基礎(chǔ) Python 知識(shí) (如果需要)
雖然本教程盡量簡(jiǎn)化,但如果你對(duì) Python 的變量、列表、循環(huán)和函數(shù)等基本概念有所了解,學(xué)習(xí)過程會(huì)更加順暢。
3. 安裝必要的第三方庫(kù)
我們將使用兩個(gè)核心的 Python 庫(kù)來構(gòu)建我們的爬蟲:
requests: 用于發(fā)送 HTTP 請(qǐng)求,獲取網(wǎng)頁(yè)內(nèi)容。BeautifulSoup4: 用于解析 HTML 和 XML 文檔,從中提取數(shù)據(jù)。
打開你的命令行工具 (Windows 用戶是 cmd 或 PowerShell,macOS/Linux 用戶是 Terminal),運(yùn)行以下命令來安裝它們:
pip install requests beautifulsoup4
如果安裝成功,你就可以開始你的爬蟲之旅了!
手把手教學(xué):編寫你的第一個(gè)爬蟲
我們將以一個(gè)經(jīng)典的爬蟲練習(xí)網(wǎng)站 http://quotes.toscrape.com/ 為例,目標(biāo)是抓取該網(wǎng)站上的所有名言及其作者。
步驟一:理解網(wǎng)頁(yè)結(jié)構(gòu) (知己知彼,百戰(zhàn)不殆)
在開始寫代碼之前,最重要的一步是分析目標(biāo)網(wǎng)頁(yè)的結(jié)構(gòu)。我們需要知道我們想要的數(shù)據(jù)(名言和作者)在 HTML 代碼中的位置和特征。
- 打開目標(biāo)網(wǎng)站: 在你的瀏覽器中訪問
http://quotes.toscrape.com/。 - 打開開發(fā)者工具:
- 大多數(shù)瀏覽器可以通過右鍵點(diǎn)擊頁(yè)面上的任何元素,然后選擇“檢查”或“檢查元素”來打開開發(fā)者工具。
- 或者使用快捷鍵:
F12(Windows/Linux) 或Cmd + Option + I(macOS)。
- 定位目標(biāo)數(shù)據(jù):
- 在開發(fā)者工具中,點(diǎn)擊左上角的“選擇元素”小圖標(biāo) (一個(gè)鼠標(biāo)箭頭指向一個(gè)方塊的圖標(biāo))。
- 將鼠標(biāo)移動(dòng)到頁(yè)面上的一條名言上,例如“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”,你會(huì)看到對(duì)應(yīng)的 HTML 代碼被高亮顯示。
- 仔細(xì)觀察,你會(huì)發(fā)現(xiàn)每條名言都包含在一個(gè)
<div class="quote">標(biāo)簽中。 - 名言本身在
<span class="text" itemprop="text">標(biāo)簽里。 - 作者在
<small class="author" itemprop="author">標(biāo)簽里。
通過這一步,我們明確了數(shù)據(jù)在 HTML 中的“身份信息”:它們都位于 div 標(biāo)簽中,并且?guī)в刑囟ǖ?class 屬性。
步驟二:發(fā)送 HTTP 請(qǐng)求,獲取網(wǎng)頁(yè)內(nèi)容
現(xiàn)在,我們使用 requests 庫(kù)來模擬瀏覽器訪問目標(biāo)網(wǎng)頁(yè),獲取其 HTML 內(nèi)容。
import requests
# 目標(biāo)網(wǎng)頁(yè)的 URL
url = 'http://quotes.toscrape.com/'
try:
# 發(fā)送 GET 請(qǐng)求,獲取網(wǎng)頁(yè)響應(yīng)
response = requests.get(url)
# 檢查 HTTP 狀態(tài)碼,200 表示成功
if response.status_code == 200:
print("網(wǎng)頁(yè)請(qǐng)求成功!")
# 獲取網(wǎng)頁(yè)的 HTML 內(nèi)容
html_content = response.text
# print(html_content[:500]) # 打印前500個(gè)字符,查看是否成功獲取
else:
print(f"網(wǎng)頁(yè)請(qǐng)求失敗,狀態(tài)碼:{response.status_code}")
except requests.exceptions.RequestException as e:
print(f"請(qǐng)求發(fā)生錯(cuò)誤: {e}")
代碼解釋:
import requests: 導(dǎo)入requests庫(kù)。url = 'http://quotes.toscrape.com/': 定義我們要抓取的網(wǎng)頁(yè)地址。requests.get(url): 這是最核心的部分,它向指定的 URL 發(fā)送一個(gè) HTTP GET 請(qǐng)求,并返回一個(gè)Response對(duì)象。response.status_code: 檢查請(qǐng)求的狀態(tài)碼。200表示請(qǐng)求成功,服務(wù)器已返回網(wǎng)頁(yè)內(nèi)容。response.text: 獲取響應(yīng)的文本內(nèi)容,這就是我們需要的 HTML 源代碼。try...except: 這是一個(gè)錯(cuò)誤處理機(jī)制,用于捕獲在網(wǎng)絡(luò)請(qǐng)求過程中可能發(fā)生的異常(例如網(wǎng)絡(luò)斷開)。
運(yùn)行這段代碼,如果看到“網(wǎng)頁(yè)請(qǐng)求成功!”的輸出,說明你已經(jīng)成功邁出了第一步!
步驟三:解析網(wǎng)頁(yè)內(nèi)容
獲取到 HTML 內(nèi)容后,它還是一大串雜亂的字符串。我們需要一個(gè)工具來“理解”這些字符串,將它們組織成一個(gè)易于操作的結(jié)構(gòu)。這時(shí),BeautifulSoup 就派上用場(chǎng)了。
from bs4 import BeautifulSoup
import requests
url = 'http://quotes.toscrape.com/'
response = requests.get(url)
html_content = response.text
# 使用 BeautifulSoup 解析 HTML 內(nèi)容
# 'html.parser' 是 Python 內(nèi)置的解析器
soup = BeautifulSoup(html_content, 'html.parser')
print("網(wǎng)頁(yè)解析成功!")
# print(soup.prettify()[:1000]) # 打印格式化后的HTML前1000字符,方便查看結(jié)構(gòu)
代碼解釋:
from bs4 import BeautifulSoup: 從bs4庫(kù)中導(dǎo)入BeautifulSoup類。BeautifulSoup(html_content, 'html.parser'): 創(chuàng)建一個(gè)BeautifulSoup對(duì)象。它接收兩個(gè)參數(shù):html_content: 我們從requests獲取到的 HTML 字符串。'html.parser': 指定使用 Python 內(nèi)置的 HTML 解析器。
現(xiàn)在,soup 對(duì)象就包含了整個(gè)網(wǎng)頁(yè)的結(jié)構(gòu),我們可以像操作樹形結(jié)構(gòu)一樣,方便地查找和提取其中的元素。
步驟四:提取所需數(shù)據(jù)
這是爬蟲最核心的部分。根據(jù)我們?cè)诓襟E一中對(duì)網(wǎng)頁(yè)結(jié)構(gòu)的分析,我們將使用 BeautifulSoup 的方法來定位并提取名言和作者。
from bs4 import BeautifulSoup
import requests
url = 'http://quotes.toscrape.com/'
response = requests.get(url)
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
# 查找所有 class 為 'quote' 的 div 標(biāo)簽
# 每個(gè)這樣的 div 標(biāo)簽都包含一條名言和作者信息
quotes = soup.find_all('div', class_='quote')
# 創(chuàng)建一個(gè)列表來存儲(chǔ)所有提取到的數(shù)據(jù)
all_quotes_data = []
# 遍歷每一個(gè) quote 標(biāo)簽,提取名言和作者
for quote_tag in quotes:
# 提取名言文本
text = quote_tag.find('span', class_='text').get_text()
# 提取作者
author = quote_tag.find('small', class_='author').get_text()
# 提取標(biāo)簽(可選)
# tags_elements = quote_tag.find('div', class_='tags').find_all('a', class_='tag')
# tags = [tag.get_text() for tag_element in tags_elements]
# 將提取到的數(shù)據(jù)存儲(chǔ)為字典
quote_data = {
'text': text,
'author': author,
# 'tags': tags
}
all_quotes_data.append(quote_data)
# 打印提取到的數(shù)據(jù)
for data in all_quotes_data:
print(f"名言: {data['text']}")
print(f"作者: {data['author']}")
print("-" * 30)
print(f"\n成功提取了 {len(all_quotes_data)} 條名言。")
代碼解釋:
soup.find_all('div', class_='quote'): 這是BeautifulSoup最常用的方法之一。- 它會(huì)在整個(gè)
soup對(duì)象中查找所有符合條件的標(biāo)簽。 'div': 指定要查找的標(biāo)簽名是div。class_='quote': 指定標(biāo)簽的class屬性必須是'quote'(注意class是 Python 關(guān)鍵字,所以這里用class_表示)。- 它會(huì)返回一個(gè)列表,其中包含了所有匹配的
div標(biāo)簽對(duì)象。
- 它會(huì)在整個(gè)
for quote_tag in quotes:: 遍歷我們找到的每一個(gè)名言容器。quote_tag.find('span', class_='text'): 在當(dāng)前的quote_tag(也就是一個(gè)<div class="quote">標(biāo)簽內(nèi)部) 中,繼續(xù)查找span標(biāo)簽,且class為'text'。find()方法只會(huì)返回第一個(gè)匹配的元素。.get_text(): 提取標(biāo)簽內(nèi)部的純文本內(nèi)容,去除所有 HTML 標(biāo)簽。all_quotes_data.append(quote_data): 將每條名言和作者信息存儲(chǔ)為一個(gè)字典,然后添加到all_quotes_data列表中。
運(yùn)行這段代碼,你將看到所有名言和作者清晰地打印在控制臺(tái)上。
步驟五:保存數(shù)據(jù)
僅僅在控制臺(tái)打印數(shù)據(jù)是不夠的,通常我們需要將數(shù)據(jù)保存到文件中,以便后續(xù)分析或使用。這里我們演示如何將數(shù)據(jù)保存為 CSV (Comma Separated Values) 文件,這是一種常見的表格數(shù)據(jù)格式,可以用 Excel 或其他數(shù)據(jù)分析工具打開。
import csv
from bs4 import BeautifulSoup
import requests
url = 'http://quotes.toscrape.com/'
response = requests.get(url)
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
quotes = soup.find_all('div', class_='quote')
all_quotes_data = []
for quote_tag in quotes:
text = quote_tag.find('span', class_='text').get_text()
author = quote_tag.find('small', class_='author').get_text()
all_quotes_data.append({'text': text, 'author': author})
# 定義保存的文件名
filename = 'quotes.csv'
# 使用 csv 模塊將數(shù)據(jù)寫入 CSV 文件
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
# 定義 CSV 文件的列名(表頭)
fieldnames = ['text', 'author']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
# 寫入表頭
writer.writeheader()
# 寫入所有數(shù)據(jù)
writer.writerows(all_quotes_data)
print(f"\n數(shù)據(jù)已成功保存到 {filename} 文件中。")
代碼解釋:
import csv: 導(dǎo)入 Python 內(nèi)置的csv模塊。with open(filename, 'w', newline='', encoding='utf-8') as csvfile::open()函數(shù)用于打開文件。filename: 我們指定的文件名quotes.csv。'w': 以寫入模式打開文件(如果文件不存在則創(chuàng)建,如果存在則清空內(nèi)容)。newline='': 這是csv模塊推薦的參數(shù),可以防止在 Windows 上寫入空行。encoding='utf-8': 指定文件編碼為 UTF-8,以支持中文字符或其他特殊字符。with語句確保文件在使用完畢后自動(dòng)關(guān)閉,即使發(fā)生錯(cuò)誤。
fieldnames = ['text', 'author']: 定義 CSV 文件的列名,這與我們字典的鍵相對(duì)應(yīng)。writer = csv.DictWriter(csvfile, fieldnames=fieldnames): 創(chuàng)建一個(gè)DictWriter對(duì)象,它允許我們以字典的形式寫入數(shù)據(jù)。writer.writeheader(): 寫入 CSV 文件的表頭。writer.writerows(all_quotes_data): 寫入all_quotes_data列表中的所有字典數(shù)據(jù)。
運(yùn)行這段代碼后,你的項(xiàng)目目錄下會(huì)生成一個(gè) quotes.csv 文件,用 Excel 或文本編輯器打開,你就能看到整齊排列的名言和作者數(shù)據(jù)了!
完整代碼示例
將以上所有步驟整合在一起,這就是你的第一個(gè)網(wǎng)絡(luò)爬蟲的完整代碼:
import requests
from bs4 import BeautifulSoup
import csv
def scrape_quotes(url):
"""
抓取指定URL的名言和作者信息。
"""
all_quotes_data = []
try:
response = requests.get(url)
if response.status_code == 200:
print(f"成功訪問 {url}")
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
quotes = soup.find_all('div', class_='quote')
for quote_tag in quotes:
text = quote_tag.find('span', class_='text').get_text()
author = quote_tag.find('small', class_='author').get_text()
all_quotes_data.append({'text': text, 'author': author})
print(f"成功提取 {len(all_quotes_data)} 條名言。")
else:
print(f"訪問 {url} 失敗,狀態(tài)碼:{response.status_code}")
except requests.exceptions.RequestException as e:
print(f"請(qǐng)求 {url} 發(fā)生錯(cuò)誤: {e}")
return all_quotes_data
def save_to_csv(data, filename='quotes.csv'):
"""
將數(shù)據(jù)保存到CSV文件。
"""
if not data:
print("沒有數(shù)據(jù)可保存。")
return
fieldnames = ['text', 'author']
try:
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
print(f"數(shù)據(jù)已成功保存到 {filename}。")
except IOError as e:
print(f"保存文件時(shí)發(fā)生錯(cuò)誤: {e}")
if __name__ == "__main__":
target_url = 'http://quotes.toscrape.com/'
quotes_data = scrape_quotes(target_url)
save_to_csv(quotes_data, 'my_first_quotes.csv')
常見問題與解決方案
在你的爬蟲之路上,可能會(huì)遇到一些挑戰(zhàn)。以下是一些常見問題及其初步解決方案:
1. 反爬機(jī)制 (Anti-Scraping)
許多網(wǎng)站不希望自己的數(shù)據(jù)被輕易抓取,因此會(huì)設(shè)置各種反爬機(jī)制。
User-Agent 檢測(cè): 網(wǎng)站會(huì)檢查你的請(qǐng)求頭中的 User-Agent 字段,判斷你是否是正常的瀏覽器訪問。默認(rèn)情況下 requests 的 User-Agent 比較特殊。
解決方案: 在 requests.get() 中添加 headers 參數(shù),模擬瀏覽器。
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36'
}
response = requests.get(url, headers=headers)
IP 限制: 頻繁訪問同一網(wǎng)站可能導(dǎo)致你的 IP 被暫時(shí)或永久封禁。
解決方案: 減慢請(qǐng)求頻率 (添加 time.sleep() 延遲),或者使用 IP 代理池 (更高級(jí))。
robots.txt: 這是一個(gè)網(wǎng)站告訴爬蟲哪些頁(yè)面可以抓取,哪些不可以的文件。
解決方案: 爬蟲開發(fā)者應(yīng)自覺遵守網(wǎng)站的 robots.txt 規(guī)則,這是爬蟲倫理的基本要求。
驗(yàn)證碼、JavaScript 動(dòng)態(tài)加載: 某些內(nèi)容需要用戶交互或 JavaScript 渲染才能顯示。
解決方案: 對(duì)于驗(yàn)證碼,可能需要人工識(shí)別或使用 OCR 服務(wù);對(duì)于 JavaScript 動(dòng)態(tài)加載,可能需要使用 Selenium 等自動(dòng)化瀏覽器工具 (超出了本入門教程范圍)。
重要提示: 進(jìn)行網(wǎng)絡(luò)爬蟲時(shí),請(qǐng)務(wù)必遵守法律法規(guī)和網(wǎng)站的使用條款,尊重網(wǎng)站的 robots.txt 協(xié)議,并避免對(duì)目標(biāo)網(wǎng)站造成過大壓力。
2. 編碼問題 (Encoding Issues)
有時(shí)獲取到的網(wǎng)頁(yè)內(nèi)容顯示亂碼。
解決方案: requests 庫(kù)通常會(huì)自動(dòng)檢測(cè)編碼,但有時(shí)會(huì)出錯(cuò)。你可以手動(dòng)指定或糾正編碼:
response.encoding = 'utf-8' # 嘗試指定為 UTF-8 # 或者讓 requests 自動(dòng)猜測(cè) # response.encoding = response.apparent_encoding html_content = response.text
3. 網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤
網(wǎng)絡(luò)不穩(wěn)定或目標(biāo)服務(wù)器問題可能導(dǎo)致請(qǐng)求失敗。
解決方案: 使用 try-except 塊來捕獲 requests.exceptions.RequestException 及其子類,如 ConnectionError (連接錯(cuò)誤)、Timeout (超時(shí))。
import requests
import time # 用于添加延遲
try:
response = requests.get(url, timeout=5) # 設(shè)置超時(shí)時(shí)間
# ... 處理響應(yīng)
except requests.exceptions.Timeout:
print("請(qǐng)求超時(shí)")
except requests.exceptions.ConnectionError:
print("連接錯(cuò)誤,請(qǐng)檢查網(wǎng)絡(luò)或URL")
except requests.exceptions.RequestException as e:
print(f"發(fā)生未知請(qǐng)求錯(cuò)誤: {e}")
time.sleep(1) # 請(qǐng)求之間暫停1秒
總結(jié)與進(jìn)階
恭喜你!你已經(jīng)成功編寫了你的第一個(gè) Python 網(wǎng)絡(luò)爬蟲。這只是冰山一角,爬蟲的世界廣闊而有趣。
你學(xué)到了什么?
- 如何使用
requests庫(kù)發(fā)送 HTTP 請(qǐng)求并獲取網(wǎng)頁(yè)內(nèi)容。 - 如何使用
BeautifulSoup庫(kù)解析 HTML,定位并提取所需數(shù)據(jù)。 - 如何將抓取到的數(shù)據(jù)保存到 CSV 文件。
- 了解了基本的爬蟲倫理和常見問題的初步解決方案。
接下來可以探索什么?
- 多頁(yè)爬取 (Pagination): 許多網(wǎng)站都有分頁(yè),你需要找到下一頁(yè)的鏈接或規(guī)律,循環(huán)抓取所有頁(yè)面的數(shù)據(jù)。
- 數(shù)據(jù)清洗與處理: 抓取到的數(shù)據(jù)可能需要進(jìn)一步清洗、格式化才能使用。
- 更復(fù)雜的數(shù)據(jù)結(jié)構(gòu): 學(xué)習(xí)如何抓取嵌套的、更復(fù)雜的數(shù)據(jù)。
- 異步爬蟲: 對(duì)于需要抓取大量頁(yè)面的場(chǎng)景,異步爬蟲可以大大提高效率。
- 更強(qiáng)大的爬蟲框架: 當(dāng)項(xiàng)目變得復(fù)雜時(shí),可以考慮使用像 Scrapy 這樣的專業(yè)爬蟲框架,它提供了更完善的結(jié)構(gòu)和功能。
- API 抓取: 許多網(wǎng)站提供 API 接口,通過 API 獲取數(shù)據(jù)通常比解析 HTML 更穩(wěn)定高效。
到此這篇關(guān)于Python實(shí)現(xiàn)輕松獲取網(wǎng)頁(yè)數(shù)據(jù)并解析的文章就介紹到這了,更多相關(guān)Python獲取網(wǎng)頁(yè)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python抓取靜態(tài)網(wǎng)頁(yè)數(shù)據(jù)的完整指南
- Python使用lxml庫(kù)和Xpath提取網(wǎng)頁(yè)數(shù)據(jù)的完整指南與最佳實(shí)戰(zhàn)
- Python使用PyQuery快速解析網(wǎng)頁(yè)數(shù)據(jù)的實(shí)戰(zhàn)指南
- Python實(shí)現(xiàn)網(wǎng)頁(yè)搜索和數(shù)據(jù)提取的示例詳解
- Python BeautifulSoup高效解析網(wǎng)頁(yè)數(shù)據(jù)
- Python使用BeautifulSoup提取網(wǎng)頁(yè)數(shù)據(jù)的完整指南
- python實(shí)現(xiàn)抓取網(wǎng)頁(yè)數(shù)據(jù)并生成excel的實(shí)例
- Python實(shí)現(xiàn)快速抓取網(wǎng)頁(yè)數(shù)據(jù)的5種高效方法
相關(guān)文章
深入理解Python單元測(cè)試unittest的使用示例
本篇文章主要介紹了深入理解Python單元測(cè)試unittest的使用示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
Python非單向遞歸函數(shù)如何返回全部結(jié)果
這篇文章主要介紹了Python非單向遞歸函數(shù)如何返回全部結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
python機(jī)器學(xué)習(xí)實(shí)現(xiàn)oneR算法(以鳶尾data為例)
本文主要介紹了python機(jī)器學(xué)習(xí)實(shí)現(xiàn)oneR算法(以鳶尾data為例),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
python3.3使用tkinter開發(fā)猜數(shù)字游戲示例
這篇文章主要介紹了python3.3使用tkinter開發(fā)猜數(shù)字游戲示例,需要的朋友可以參考下2014-03-03
Django模板導(dǎo)入母版繼承和自定義返回Html片段過程解析
這篇文章主要介紹了Django模板導(dǎo)入母版繼承和自定義返回Html片段過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python基礎(chǔ)學(xué)習(xí)之生成器與文件系統(tǒng)知識(shí)總結(jié)
本文是參考《python數(shù)據(jù)分析》的附錄對(duì)生成器和文件系統(tǒng)結(jié)合案例的一個(gè)簡(jiǎn)單回顧,文中對(duì)python生成器與文件系統(tǒng)作了非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05

