摘要:如果該文件已存在,文件指針將會放在文件的結(jié)尾。運(yùn)行結(jié)果以上是讀取文件的方法。為了輸出中文,我們還需要指定一個參數(shù)為,另外規(guī)定文件輸出的編碼。
上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---30、解析庫的使用:PyQuery
下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---32、數(shù)據(jù)存儲:關(guān)系型數(shù)據(jù)庫存儲:MySQL
我們用解析器解析出數(shù)據(jù)之后,接下來的一步就是對數(shù)據(jù)進(jìn)行存儲了,保存的形式可以多種多樣,最簡單的形式可以直接保存為文本文件,如 TXT、Json、CSV 等等,另外還可以保存到數(shù)據(jù)庫中,如關(guān)系型數(shù)據(jù)庫 MySQL,非關(guān)系型數(shù)據(jù)庫 MongoDB、Redis 等等。那么本章我們就來統(tǒng)一了解一下數(shù)據(jù)的保存方式。
文本存儲文件存儲形式可以是多種多樣的,比如可以保存成 TXT 純文本形式,也可以保存為 Json 格式、CSV 格式等,本節(jié)我們來了解下文本文件的存儲方式。
1、TXT文本存儲將數(shù)據(jù)保存到 TXT 文本的操作非常簡單,而且 TXT 文本幾乎兼容任何平臺,但是有個缺點(diǎn)就是不利于檢索,所以如果對檢索和數(shù)據(jù)結(jié)構(gòu)要求不高,追求方便第一的話,可以采用 TXT 文本存儲,本節(jié)我們來看下利用 Python 保存 TXT 文本文件的方法。
1. 本節(jié)目標(biāo)本節(jié)我們要保存知乎發(fā)現(xiàn)頁面的熱門問題部分,將其問題和答案統(tǒng)一保存成文本形式。
2. 基本實(shí)例首先可以用 Requests 將網(wǎng)頁源代碼獲取下來,然后使用 PyQuery 解析庫進(jìn)行解析,接下來將提取的標(biāo)題、回答者、回答保存到文本,代碼如下:
import requests from pyquery import PyQuery as pq url = "https://www.zhihu.com/explore" headers = { ??? "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" } html = requests.get(url, headers=headers).text doc = pq(html) items = doc(".explore-tab .feed-item").items() for item in items: ??? question = item.find("h2").text() ??? author = item.find(".author-link-line").text() ??? answer = pq(item.find(".content").html()).text() ??? file = open("explore.txt", "a", encoding="utf-8") ??? file.write(" ".join([question, author, answer])) ??? file.write(" " + "=" * 50 + " ") ??? file.close()
在這里主要是為了演示文件保存的方式,因此 Requests 異常處理部分在此省去,我們首先用 Requests 提取了知乎發(fā)現(xiàn)頁面,然后將熱門問題的問題、回答者、答案全文提取出來,然后利用了Python提供的 open() 方法打開一個文本文件,獲取一個文件操作對象,這里賦值為 file,然后利用 file 對象的 write() 方法將提取的內(nèi)容寫入文件,最后記得調(diào)用一下 close() 方法將其關(guān)閉,這樣抓取的內(nèi)容即可成功寫入到文本中了。
運(yùn)行程序,可以發(fā)現(xiàn)在本地生成了一個 explore.txt 文件.
這樣熱門問答的內(nèi)容就被保存文文本形式了。
在這里 open() 方法的第一個參數(shù)即為要保存的目標(biāo)文件名稱,第二個參數(shù)為 a,代表以追加方式寫入到文本,另外我們還指定了文件的編碼為utf-8,最后寫入完成之后,我們還需要調(diào)用 close() 方法來關(guān)閉文件對象。
在剛才的實(shí)例中,第二個參數(shù)我們設(shè)置成了 a,這樣在每次寫入文本時不會清空源文件,而是在文件末尾寫入新的內(nèi)容,這是一種文件打開方式。關(guān)于文件打開方式,其實(shí)還有另外的幾種,在此列舉如下:
r,以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。
rb,以二進(jìn)制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認(rèn)模式。
r+,打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+,以二進(jìn)制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w,打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb ,以二進(jìn)制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
w+, 打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb+,以二進(jìn)制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a,打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
ab 以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
a+,打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。
ab+,以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。
4. 簡化寫法另外文件寫入還有一種簡寫方法,那就是使用 with as 語法,在 with 控制塊結(jié)束時,文件會自動關(guān)閉,所以就不需要再調(diào)用 close() 方法了。
所以上面的保存方式我們可以簡寫如下:
with open("explore.txt", "a", encoding="utf-8") as file: ??? file.write(" ".join([question, author, answer])) ??? file.write(" " + "=" * 50 + " ")
如果想保存時將原文清空,那么可以將第二個參數(shù)改寫為 w,代碼如下:
with open("explore.txt", "w", encoding="utf-8") as file: ??? file.write(" ".join([question, author, answer])) ??? file.write(" " + "=" * 50 + " ")5. 結(jié)語
以上便是利用 Python 將結(jié)果保存為 TXT 文件的方法,此種方法簡單易用,操作高效,是一種最基本的保存數(shù)據(jù)的方法。
2、Json文件存儲Json,全稱為 JavaScript Object Notation, 也就是 JavaScript 對象標(biāo)記,通過對象和數(shù)組的組合來表示數(shù)據(jù),構(gòu)造簡潔但是結(jié)構(gòu)化程度非常高,它是一種輕量級的數(shù)據(jù)交換格式,本節(jié)我們來了解一下利用 Python 保存數(shù)據(jù)到 Json 文件的方法。
1. 對象和數(shù)組在 JavaScript 語言中,一切都是對象。因此,任何支持的類型都可以通過 Json 來表示,例如字符串、數(shù)字、對象、數(shù)組等。但是對象和數(shù)組是比較特殊且常用的兩種類型。
對象,對象在 JavaScript 中是使用花括號 {} 包裹起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 {key1:value1, key2:value2, ...} 的鍵值對結(jié)構(gòu)。在面向?qū)ο蟮恼Z言中,key 為對象的屬性,value 為對應(yīng)的值。鍵名可以使用整數(shù)和字符串來表示。值的類型可以是任意類型。數(shù)組,數(shù)組在 JavaScript 中是方括號 [] 包裹起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 ["java", "javascript", "vb", ...] 的索引結(jié)構(gòu)。在 JavaScript 中,數(shù)組是一種比較特殊的數(shù)據(jù)類型,它也可以像對象那樣使用鍵值對,但還是索引使用得多。同樣,值的類型可以是任意類型。所以一個 Json 對象可以寫為如下形式:
[{ ??? "name": "Bob", ??? "gender": "male", ??? "birthday": "1992-10-18" }, { ???? "name": "Selina", ??? "gender": "female", ??? "birthday": "1995-10-18" }]
由中括號包圍的就相當(dāng)于列表類型,列表的每個元素可以是任意類型,在示例中它是字典類型,由大括號包圍。
Json 可以由以上兩種形式自由組合而成,可以無限次嵌套,結(jié)構(gòu)清晰,是數(shù)據(jù)交換的極佳方式。
Python 為我們提供了簡單易用的 json 庫來供我們實(shí)現(xiàn) Json 文件的讀寫操作,我們可以調(diào)用 json 庫的 loads() 方法將 Json 文本字符串轉(zhuǎn)為 Json 對象,可以通過 dumps()方法將 Json 對象轉(zhuǎn)為文本字符串。
例如在這里有一段 Json 形式的字符串,它是 str 類型,我們用 Python 將可其轉(zhuǎn)換為可操作的數(shù)據(jù)結(jié)構(gòu),如列表或字典。
import json str = """ [{ ??? "name": "Bob", ??? "gender": "male", ??? "birthday": "1992-10-18" }, { ??? "name": "Selina", ??? "gender": "female", ??? "birthday": "1995-10-18" }] """ print(type(str)) data = json.loads(str) print(data) print(type(data))
運(yùn)行結(jié)果:
[{"name": "Bob", "gender": "male", "birthday": "1992-10-18"}, {"name": "Selina", "gender": "female", "birthday": "1995-10-18"}]
在這里我們使用了 loads() 方法將字符串轉(zhuǎn)為 Json 對象,由于最外層是中括號,所以最終的類型是列表類型。
這樣一來我們就可以用索引來取到對應(yīng)的內(nèi)容了,例如我們想取第一個元素里的 name 屬性,就可以使用如下方式獲?。?/p>
data[0]["name"] data[0].get("name")
得到的結(jié)果都是:
Bob
通過中括號加 0 索引我們可以拿到第一個字典元素,然后再調(diào)用其鍵名即可得到相應(yīng)的鍵值。在獲取鍵值的時候有兩種方式,一種是中括號加鍵名,另一種是 get() 方法傳入鍵名。推薦使用 get() 方法來獲取內(nèi)容,這樣如果鍵名不存在的話不會報(bào)錯,會返回None。另外 get() 方法還可以傳入第二個參數(shù)即默認(rèn)值,我們用一個示例感受一下:
data[0].get("age") data[0].get("age", 25)
運(yùn)行結(jié)果:
None 25
在這里我們嘗試獲取年齡 age,其實(shí)在原字典中是不存在該鍵名的,如果不存在,默認(rèn)會返回 None,如果傳入第二個參數(shù)即默認(rèn)值,那么在不存在的情況下則返回該默認(rèn)值。
值得注意的是 Json 的數(shù)據(jù)需要用雙引號來包圍,不能使用單引號。例如若使用如下形式表示則會出現(xiàn)錯誤:
import json str = """ [{ ??? "name": "Bob", ??? "gender": "male", ??? "birthday": "1992-10-18" }] """ data = json.loads(str)
運(yùn)行結(jié)果:
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 8)
在這里會出現(xiàn) Json 解析錯誤的提示,是因?yàn)樵谶@里數(shù)據(jù)用了單括號來包圍,請千萬注意 Json 字符串的表示需要用雙引號,否則 loads() 方法會解析失敗。
如果我們是從 Json 文本中讀取內(nèi)容,例如在這里有一個data.json 文本文件,其內(nèi)容是剛才我們所定義的 Json 字符串。
我們可以先將文本文件內(nèi)容讀出,然后再利用 loads() 方法轉(zhuǎn)化。
import json with open("data.json", "r") as file: ??? str = file.read() ??? data = json.loads(str) ??? print(data)
運(yùn)行結(jié)果:
[{"name": "Bob", "gender": "male", "birthday": "1992-10-18"}, {"name": "Selina", "gender": "female", "birthday": "1995-10-18"}]
以上是讀取 Json 文件的方法。
3. 輸出Json另外我們還可以調(diào)用 dumps() 方法來將 Json 對象轉(zhuǎn)化為字符串。
例如我們將剛上例中的列表重新寫入到文本。
import json data = [{ ??? "name": "Bob", ??? "gender": "male", ??? "birthday": "1992-10-18" }] with open("data.json", "w") as file: ??? file.write(json.dumps(data))
利用 dumps() 方法我們可以將 Json 對象轉(zhuǎn)為字符串,然后再調(diào)用文件的 write() 方法即可寫入到文本,結(jié)果如圖 5-2 所示:
圖 5-2 寫入結(jié)果
另外如果我們想保存 Json 的格式,可以再加一個參數(shù) indent,代表縮進(jìn)字符個數(shù)。
with open("data.json", "w") as file: ??? file.write(json.dumps(data, indent=2))
寫入結(jié)果如圖 5-3 所示:
圖 5-3 寫入結(jié)果
這樣得到的內(nèi)容會自動帶有縮進(jìn),格式會更加清晰。
另外如果 Json 中包含中文字符,例如我們將之前的 Json 的部分值改為中文,再用之前的方法寫入到文本。
import json data = [{ ??? "name": "王偉", ??? "gender": "男", ??? "birthday": "1992-10-18" }] with open("data.json", "w") as file: ??? file.write(json.dumps(data, indent=2))
寫入結(jié)果如圖 5-4 所示:
圖 5-4 寫入結(jié)果
可以看到中文字符都變成了 Unicode 字符,這并不是我們想要的結(jié)果。
為了輸出中文,我們還需要指定一個參數(shù) ensure_ascii 為 False,另外規(guī)定文件輸出的編碼。
with open("data.json", "w", encoding="utf-8") as file: ??? file.write(json.dumps(data, indent=2, ensure_ascii=False))
寫入結(jié)果如圖 5-5 所示:
圖 5-5 寫入結(jié)果
這樣我們就可以輸出 Json 為中文了,所以如果字典中帶有中文的內(nèi)容我們需要設(shè)置 ensure_ascii 參數(shù)為 False 才可正常寫入中文。
本節(jié)我們了解了用 Python 進(jìn)行 Json 文件讀寫的方法,在后面做數(shù)據(jù)解析時經(jīng)常會用到,建議熟練掌握。
3、CSV文件存儲CSV,全稱叫做 Comma-Separated Values,中文可以叫做逗號分隔值或字符分隔值,其文件以純文本形式存儲表格數(shù)據(jù)。該文件是一個字符序列,可以由任意數(shù)目的記錄組成,記錄間以某種換行符分隔,每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符,不過所有記錄都有完全相同的字段序列,相當(dāng)于一個結(jié)構(gòu)化表的純文本形式,它相比 Excel 文件更加簡介,XLS 文本是電子表格,它包含了文本、數(shù)值、公式和格式等內(nèi)容,而 CSV 中不包含這些內(nèi)容,就是特定字符分隔的純文本,結(jié)構(gòu)簡單清晰,所以有時候我們用 CSV 來保存數(shù)據(jù)是比較方便的,本節(jié)我們來講解下 Python 讀取和寫入 CSV 文件的過程。
1. 寫入在這里我們先看一個最簡單的例子:
import csv with open("data.csv", "w") as csvfile: ??? writer = csv.writer(csvfile) ??? writer.writerow(["id", "name", "age"]) ??? writer.writerow(["10001", "Mike", 20]) ??? writer.writerow(["10002", "Bob", 22]) ??? writer.writerow(["10003", "Jordan", 21])
首先打開了一個 data.csv 文件,然后指定了打開的模式為 w,即寫入,獲得文件句柄,隨后調(diào)用 csv 庫的 writer() 方法初始化一個寫入對象,傳入該句柄,然后調(diào)用 writerow() 方法傳入每行的數(shù)據(jù)即可完成寫入。
運(yùn)行結(jié)束后會生成一個名為 data.csv 的文件,數(shù)據(jù)就成功寫入了,直接文本形式打開的話內(nèi)容如下:
id,name,age 10001,Mike,20 10002,Bob,22 10003,Jordan,21
可以看到寫入的文本默認(rèn)是以逗號分隔的,調(diào)用一次 writerow() 方法即可寫入一行數(shù)據(jù),我們用 Excel 打開的結(jié)果如圖 5-6 所示:
圖 5-6 打開結(jié)果
如果我們想修改列與列之間的分隔符可以傳入 delimiter 參數(shù),代碼如下:
import csv with open("data.csv", "w") as csvfile: ??? writer = csv.writer(csvfile, delimiter=" ") ??? writer.writerow(["id", "name", "age"]) ??? writer.writerow(["10001", "Mike", 20]) ??? writer.writerow(["10002", "Bob", 22]) ??? writer.writerow(["10003", "Jordan", 21])
例如這里在初始化寫入對象的時候傳入 delimiter 為空格,這樣輸出的結(jié)果的每一列就是以空格分隔的了,內(nèi)容如下:
id name age 10001 Mike 20 10002 Bob 22 10003 Jordan 21
另外我們也可以調(diào)用 writerows() 方法同時寫入多行,此時參數(shù)就需要為二維列表,例如:
import csv with open("data.csv", "w") as csvfile: ??? writer = csv.writer(csvfile) ??? writer.writerow(["id", "name", "age"]) ??? writer.writerows([["10001", "Mike", 20], ["10002", "Bob", 22], ["10003", "Jordan", 21]])
輸出效果是相同的,內(nèi)容如下:
id,name,age 10001,Mike,20 10002,Bob,22 10003,Jordan,21
但是一般情況下爬蟲爬取的都是結(jié)構(gòu)化數(shù)據(jù),我們一般會用字典來表示,在 csv 庫中也提供了字典的寫入方式,實(shí)例如下:
import csv with open("data.csv", "w") as csvfile: ??? fieldnames = ["id", "name", "age"] ??? writer = csv.DictWriter(csvfile, fieldnames=fieldnames) ??? writer.writeheader() ??? writer.writerow({"id": "10001", "name": "Mike", "age": 20}) ??? writer.writerow({"id": "10002", "name": "Bob", "age": 22}) ??? writer.writerow({"id": "10003", "name": "Jordan", "age": 21})
在這里我們先定義了三個字段,用 fieldnames 表示,然后傳給 DictWriter 初始化一個字典寫入對象,然后可以先調(diào)用 writeheader() 方法先寫入頭信息,然后再調(diào)用 writerow() 方法傳入相應(yīng)字典即可,最終寫入的結(jié)果是完全相同的,內(nèi)容如下:
id,name,age 10001,Mike,20 10002,Bob,22 10003,Jordan,21
這樣我們就可以完成字典到 CSV 文件的寫入了。
另外如果我們想追加寫入的話可以修改文件的打開模式,如將 open() 函數(shù)的第二個參數(shù)改成 a 就可以變成追加寫入,代碼如下:
import csv with open("data.csv", "a") as csvfile: ??? fieldnames = ["id", "name", "age"] ??? writer = csv.DictWriter(csvfile, fieldnames=fieldnames) ??? writer.writerow({"id": "10004", "name": "Durant", "age": 22})
這樣在上面的基礎(chǔ)上再執(zhí)行這段代碼,文件內(nèi)容便會變成:
id,name,age 10001,Mike,20 10002,Bob,22 10003,Jordan,21 10004,Durant,22
可見數(shù)據(jù)被追加寫入到了文件中。
如果我們要寫入中文內(nèi)容的話可能會遇到字符編碼的問題,此時我們需要給 open() 參數(shù)指定一個編碼格式,比如這里再寫入一行包含中文的數(shù)據(jù),代碼需要改寫如下:
import csv with open("data.csv", "a", encoding="utf-8") as csvfile: ??? fieldnames = ["id", "name", "age"] ??? writer = csv.DictWriter(csvfile, fieldnames=fieldnames) ??? writer.writerow({"id": "10005", "name": "王偉", "age": 22})
在這里需要給 open() 函數(shù)指定編碼,否則可能會發(fā)生編碼錯誤。
以上便是 CSV 文件的寫入方法。
另外如果我們接觸過 Pandas 等庫的話,可以調(diào)用 DataFrame 對象的 to_csv() 方法也可以非常方便地將數(shù)據(jù)寫入到 CSV 文件中。
我們同樣可以使用 csv 庫來讀取 CSV 文件,例如我們現(xiàn)在將剛才寫入的文件內(nèi)容讀取出來,代碼如下:
import csv with open("data.csv", "r", encoding="utf-8") as csvfile: ??? reader = csv.reader(csvfile) ??? for row in reader: ??????? print(row)
運(yùn)行結(jié)果:
["id", "name", "age"] ["10001", "Mike", "20"] ["10002", "Bob", "22"] ["10003", "Jordan", "21"] ["10004", "Durant", "22"] ["10005", "王偉", "22"]
在這里我們構(gòu)造的是 Reader 對象,通過遍歷輸出了每行的內(nèi)容,每一行都是一個列表形式,注意在這里如果 CSV 文件中包含中文的話需要指定文件編碼。
另外如果我們接觸過 Pandas 的話,可以利用 read_csv() 方法將數(shù)據(jù)從 CSV 中讀取出來,例如:
import pandas? as pd df = pd.read_csv("data.csv") print(df)
運(yùn)行結(jié)果:
????? id??? name? age 0? 10001??? Mike?? 20 1? 10002???? Bob?? 22 2? 10003? Jordan?? 21 3? 10004? Durant?? 22 4? 10005????? 王偉?? 22
在做數(shù)據(jù)分析的時候此種方法用的比較多,也是一種比較方便的讀取 CSV 文件的方法。
3. 結(jié)語本節(jié)我們了解了 CSV 文件的寫入和讀取方式,它也是一種常用的數(shù)據(jù)存儲方式,需要熟練掌握。
上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---30、解析庫的使用:PyQuery
下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---32、數(shù)據(jù)存儲:關(guān)系型數(shù)據(jù)庫存儲:MySQL
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/44081.html
摘要:關(guān)系型數(shù)據(jù)庫有多種,如等等。一致性與原子性是密切相關(guān)的。持久性持續(xù)性也稱永久性,指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。如此一來,我們就可以實(shí)現(xiàn)主鍵不存在便插入數(shù)據(jù),存在則更新數(shù)據(jù)的功能了。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---31、數(shù)據(jù)存儲:文件存儲下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---33、數(shù)據(jù)存儲:非關(guān)系型數(shù)據(jù)庫存儲:MongoDB 關(guān)系型數(shù)據(jù)...
摘要:的安裝是一個輕量級的關(guān)系型數(shù)據(jù)庫,以表的形式來存儲數(shù)據(jù),本節(jié)我們來了解下它的安裝方式。相關(guān)鏈接官方網(wǎng)站下載地址中文教程下的安裝推薦使用安裝,執(zhí)行命令即可。上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)解析庫的安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)存儲庫的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---3、解析庫的安裝:LXML、BeautifulSoup、PyQuery、Tesserocr下一篇文章:Python3網(wǎng)絡(luò)...
摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:相關(guān)鏈接官方文檔安裝推薦使用安裝,命令如下運(yùn)行完畢之后即可完成的安裝。上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)數(shù)據(jù)庫的安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)庫的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---4、數(shù)據(jù)庫的安裝:MySQL、MongoDB、Redis下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---6、Web庫的安裝:Flask、Tornado 在前面一節(jié)我們介紹了幾個數(shù)據(jù)庫的安裝方式,但這僅僅是用來存...
摘要:父節(jié)點(diǎn)我們可以用方法來獲取某個節(jié)點(diǎn)的父節(jié)點(diǎn),我們用一個實(shí)例來感受一下運(yùn)行結(jié)果在這里我們首先用選取了為的節(jié)點(diǎn),然后調(diào)用了方法,得到其父節(jié)點(diǎn),類型依然是類型。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---29、解析庫的使用:BeautifulSoup下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---31、數(shù)據(jù)存儲:文件存儲 在上一節(jié)我們介紹了 BeautifulSoup 的使用,它是一個非常強(qiáng)...
閱讀 1085·2023-04-26 02:56
閱讀 23627·2021-11-23 09:51
閱讀 1981·2021-09-26 10:14
閱讀 3075·2019-08-29 13:09
閱讀 2212·2019-08-26 13:29
閱讀 640·2019-08-26 12:02
閱讀 3627·2019-08-26 10:42
閱讀 3066·2019-08-23 18:18