【损损の数据分析师】02.获取你想要的数据

声明:本文为课程《数据分析师》入门班笔记,讲师王乐业。如有学习需要请购买课程。

一、用网站API爬取网站数据

001实例:通过API来爬取豆瓣评分

在anaconda prompt中进入之前配置好的编程环境

activate course_py35

安装jupyter notebook(是一个交互式笔记本,支持运行 40 多种编程语言。本质是一个web应用程序)

conda install jupyter

进入notebook

jupyter notebook

浏览器会自动打开notebook页面,新建python3项目。

1.利用python读取url的核心代码

在python中,调用包、模块的方法import+包名称+as+简称。这里的调用包为urllib request,并将其在代码中赋予一个简称urlrequest

import urllib.request as urlreaquest

抓取信息的网页进行命名,搜索网页API

url_visit = 'https://api.douban.com/v2/movie/1296753'

爬取网页。读取url的核心代码,用到了urlrequest中的urlopen()的方法

crawl_content =urlrequest.urlopen(url_visit).read()

输出结果。unicode-escape(中文);utf8;GBK

print(crawl_content.decode('unicode-escape'))

2.利用python解析json代码

调用json包

import json

用json.loads模块解析json代码

json_content = json.loads(crawl_content.decode('utf8'))

从rating目录中,找到需要的内容average

rating = json_content['rating']['average']

输出结果

print(rating)

3.将数据保存到本地

将想要的书籍的id和评分的两个参数记录下来

id = 27077687

rating = json_content['rating']['average']

python中写文件用with open(“文件名”,“a或者w”),其中a是指在原文件末尾添加;w是指清空原文件重新添加。

with open("douban_book.txt","a") as outputfile

outputfile.wrtie表示将数据写入文件的操作,(“{}  {}\n”.format(id,rating))是需要写入文件的具体内容,使用format以固定形式组织id和rating的值,放入设定好的位置“{} {}”中。\n表示换行。

outputfile.write("{} {}\n.format(id,rating))

获取多本书的评分的代码:


import urllib.request as urlrequest  --调用urllib

import json  --调用json

id_list =[27077687,27042344,27096060,27052521]  --调用多本书的id

for id in id_list:  --写for循环,抓取不同书籍的评分

url_visit ="https://api.douban.com/v2/book/{}".format(id)

crawl_content = urlrequest.urlopen(url_visit).read()

json_content =json.loads(crawl_content.decode('utf8'))

rating =json_content['rating']['average']

with open("douban_book.txt","a") as outputfile:

outputfile.write("{} {}\n".format(id,rating))

多本书的评分:

import urllib.request as urlrequest

import json

name_list = ['醒来的女性','故事的终结','此生多珍重']

for name in name_list:

id = urllib.parse.quote(name)

url_visit = 'https://api.douban.com/v2/book/search?q={}'.format(id)

crawl_content = urlrequest.urlopen(url_visit).read()

json_content = json.loads(crawl_content.decode('utf-8'))

rank=json_content['books'][0]['rating']['average']

print( "{}  {}\n".format(name,rank))

你可能感兴趣的:(【损损の数据分析师】02.获取你想要的数据)