2018.03.16
author:wills
今天介紹我覺得很有用的東西,非常有趣,那就是json格式的數據存儲方式。重點當然不是這個,而是利用python進行文件的讀與寫。
def main():
# 我有一個list列表,我要將它永久的保存下來,該怎麼辦呢?
list1 = [1,2,3,4,5]
# 這個list只是存在於代碼裏,我想在桌面建一個lis.txt的文件來保存它
try:
with open('c:/Users/yqx/Desktop/lis.txt', 'w', encoding='utf-8') as fs:
# ‘r’是讀取數據
#‘a’模式是追加進去文本的字符最後面,若是‘ab’‘wb’‘rb’表示二進制模式
#以‘w’模式 寫進去的代碼是文本格式,必須是字符串,所有對列表元素
# 遍歷列表然後將每個元素轉換爲str
for x in list1:
fs.write(str(x))
# 文件打開使用完畢後要及時關閉,不要佔用資源
fs.close()
except IOError as e:
print(e)
if __name__ == '__main__':
還有一種比較通用的json格式,我就是用這個巴拉美女圖片,我的理解都寫在註釋了
# 網上的各種數據內容以 .json的格式存儲,並下載到本地存儲
# json - JavaScript Object Notation
import requests
# 導入requests模塊進行網絡訪問
import json
# 導入json模塊,使用json的函數
def main():
# 首先到天行數據網站,獲取到json格式數據流,num=10,表示一次獲取10條數據
# requests.get('網址')函數進行網絡訪問,並獲取相關數據
get_source = requests.get('http://api.tianapi.com/meinv/?key=這個自己註冊然後獲取編碼(免費的)&num=50')
# get_source.text表示這個數據流的讀取部分是文本格式,get_source.content表示讀取爲二進制格式
print(get_source.text)
print(get_source.content)
mydict = json.loads(get_source.text)
# 使用json模塊的loads函數將數據下載下來,並賦與一個變量名mydict
# mydict數據是以字典形式存儲的,我們需要的內容的鍵是‘newslist‘
# 而‘newslist’的值是一個列表,列表中的元素又是字典
# 遍歷‘newslist’鍵的值列表,找到列表中的字典元素的鍵爲‘picUrl’值
# ‘picUrl’的值就是一個字符串,我們需要的網站地址URL
for temdict in mydict['newslist']:
pic_url = temdict['picUrl']
print(pic_url)
resp = requests.get(pic_url)
# 將‘picUrl’鍵的值str再次進行網絡訪問,獲得所需下載的數據流(即美女圖片),並將其寫入一個文件中,文件名通過對‘picUrl’的值str取一部分獲得
filename = pic_url[pic_url.rfind('/') + 1:]
try:
with open(filename, 'wb') as fs:
fs.write(resp.content)
except IOError as e:
print(e)
finally:
fs.close()
if __name__ == '__main__':
main()
>> 這樣我就可以一次性,下載50張美女的圖片,保存在我想保存的位置,還想要更多,只需要運行運行就OK!5w張都不是問題寫個循環就好了(最後去蕪存菁,自己慢慢看吧),那個單次五十是因爲網站的限制,你開通會員了自然就可以下的更多了。這大概也算是一種爬蟲的基礎吧!