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张都不是问题写个循环就好了(最后去芜存菁,自己慢慢看吧),那个单次五十是因为网站的限制,你开通会员了自然就可以下的更多了。这大概也算是一种爬虫的基础吧!
版权声明:本文为qq_41772997原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。