Python爬虫学习之API与模拟ajax请求

API的使用

——通过API向服务器请求数据

优点:简单直接,高效率地批量爬取;解决动态网页的爬取。
缺点:通过API的缺点是有些网站会限制API调用的次数和频率,用户需要付费来升级成高级用户来获取更灵活的API调用。

HTTP协议

  • 在HTTP协议下,客户端和服务端通过交换各自的消息进行交互。由像浏览器这样的客户端发出的消息叫做请求(requests),被服务端回应的消息叫做响应(responses)。
  • 关于请求需要关注的:
      method:POST GET 等,描述要执行的动作
      URL:其中的参数 [url]?参数名1=参数值1&参数名2=参数值2…
      status code:2开头:成功(200 OK);4开头:请求错误(404 Not Found);5开头:服务器问题(500 Internal Server Error)
  • 关于响应需要关注的:
      Content-Type:服务器回应的报文内容类型,我们如何解析和存储数据?image/png;text/html;application/javascript…
      响应的内容:是我们需要的数据吗?(以及是否需要解码)

应用程序编程接口(Application Programming Interface,API)

  • 规范化的请求和响应;
  • 不同的应用程序提供不同的API,为程序员提供方便友好的接口以供访问;
  • 程序员可以用HTTP协议向API发送请求以获取信息,API会用XML或JSON格式返回服务器响应的信息,通过API获取的信息可以与网络爬虫获取的信息组合起来。

可扩展标记语言(eXtensible Markup Language,XML)

  • 一种很像HTML的标记语言,但其标签没有被预定义,需要自行定义标签;
  • 与HTML不同,其设计宗旨是传输数据,而不是显示数据。

Java 对象表示(JavaScript Object Notation,JSON)

  • 采用完全独立于编程语言的文本格式来存储和表示数据
  • 对象使用花括号括起来,采用{key1:value1, key2:value2, …}的键值对结构,键名可以使用整数和字符串来表示,值的类型可以是任意类型
  • 数组使用方括号括起来,采用[“java”,“javascript”,“vb”,…] 的索引结构。

API使用实例

  • 以音乐搜索开放API为例:https://api.apiopen.top/searchMusic?name=%E7%BA%A2%E8%B1%86
  • 开放API请参考:https://www.jianshu.com/p/e6f072839282
'''调用API 获取报文'''
import urllib.request as request
from urllib.parse import quote
import string
url = quote('https://api.apiopen.top/searchMusic?name=我和我的祖国',safe=string.printable) # url中包含中文 需要进行编码
response = request.urlopen(url).read().decode('utf-8')# 如果不进行解码?
response
'{"code":200,"message":"成功!","result":[{"author":"王菲","link":"http://music.163.com/#/song?id=1392990601","pic":"http://p2.music.126.net/HeGrAKPiZhKkONiFDxZvmw==/109951164384346866.jpg?param=300x300","type":"netease","title":"我和我的祖国","lrc":"[00:00.000] 作曲 : 秦咏诚\\n[00:01.000] 作词 : 张藜\\n[00:26.886]我和我的祖国一刻也不能分割\\n[00:35.486]无论我走到哪里都流出一首赞歌\\n[00:44.196]我歌唱每一座高山我歌唱每一条河\\n[00:53.136]袅袅炊烟小小村落路上一道辙\\n[01:04.352]啦……\\n[01:15.141]你用你那母亲的脉搏和我诉说\\n[01:30.514]我的祖国和我像海和浪花一朵\\n[01:39.463]浪是海的赤子海是那浪的依托\\n[01:48.130]每当大海在微笑我就是笑的旋涡\\n[01:56.663]我分担着海的忧愁分享海的欢乐\\n[02:07.830]啦…..\\n[02:18.896]永远给我碧浪清波心中的歌\\n[02:29.830]啦…….\\n[02:40.796]永远给我碧浪清波心中的歌\\n","songid":1392990601,"url":"http://music.163.com/song/media/outer/url?id=1392990601.mp3"},{"author":"周冬雨,许魏洲,关晓彤,马天宇,鞠婧祎,魏大勋","link":"http://music.163.com/#/song?id=1393224585","pic":"http://p2.music.126.net/s7OIRUffpw5k1d8tHwkdpg==/109951164386244236.jpg?param=300x300","type":"netease","title":"我和我的祖国 青春版","lrc":"[00:00.000] 作曲 : 秦咏诚\\n[00:01.000] 作词 : 张藜\\n[00:22.438](周冬雨)\\n[00:23.438]我和我的祖国\\n[00:27.359]一刻也不能分割\\n[00:30.958](魏大勋)\\n[00:31.691]无论我走到哪里\\n[00:35.789]都流出一首赞歌\\n[00:39.689](关晓彤)\\n[00:40.257]我歌唱每一座高山\\n[00:44.453]我歌唱每一条河\\n[00:48.405](鞠婧祎)\\n[00:48.716]袅袅炊烟 小小村落 路上一道辙\\n[00:57.103](合唱)\\n[00:57.340]我最亲爱的祖国\\n[01:02.323]我永远紧依着你的心窝\\n[01:07.673]你用你那 母亲的脉搏 和我诉说\\n[01:39.086](许魏洲)\\n[01:39.389]我的祖国和我\\n[01:43.571]像海和浪花一朵\\n[01:47.669](马天宇)\\n[01:47.886]浪是那海的赤子\\n[01:51.954]海是那浪的依托\\n[01:56.083](周冬雨、鞠婧祎)\\n[01:56.405]每当大海在微笑\\n[02:00.533]我就是笑的旋涡\\n[02:04.404](魏大勋、关晓彤)\\n[02:04.800]我分担着海的忧愁\\n[02:09.086]分享海的欢乐\\n[02:13.205](合唱)\\n[02:13.515]我最亲爱的祖国\\n[02:18.624]你是大海永不干涸\\n[02:24.050]永远给我 碧浪清波 心中的歌\\n[02:32.457]我最亲爱的祖国\\n[02:37.698]你是大海永不干涸\\n[02:43.117]永远给我 碧浪清波 心中的歌\\n[02:51.510]永远给我 碧浪清波 心中的歌\\n","songid":1393224585,"url":"http://music.163.com/song/media/outer/url?id=1393224585.mp3"},{"author":"福克斯,刘炫廷","link":"http://music.163.com/#/song?id=1399712957","pic":"http://p2.music.126.net/B3mBo1IHlk18ao13HuYa4Q==/109951164455634110.jpg?param=300x300","type":"netease","title":"我和我的祖国","lrc":"[00:00.000] 作曲 : 秦咏诚/福克斯/刘炫廷\\n[00:00.322] 作词 : 张藜/福克斯/刘炫廷\\n[00:00.968]编曲/混音:隆历奇\\n[00:04.933]歌曲原唱:李谷一\\n[00:27.219]福克斯verse:\\n[00:27.541]我跨过那山河\\n[00:28.624]体会在四海里奔波\\n[00:30.251]看落日余晖 茶香带余味\\n[00:32.025]纵情 哼 这首欢歌\\n[00:33.636]包含对家国的情 不会下落的心\\n[00:35.690]始终怀揣着一份敬 重\\n[00:37.252]向上的命 请你认真的听\\n[00:39.244]感受我这颗炽热的心 动\\n[00:41.128]奇迹在一幕幕谱写\\n[00:42.473]在空中 像起舞的蝴蝶\\n[00:44.301]飘落的枯叶 不再呜咽\\n[00:45.953]翻开盛世 中华 崭新的一页\\n[00:47.577]等到太阳升起 新的旅程出发\\n[00:49.593]你我中华儿女\\n[00:50.386]热血迸发\\n[00:51.182]而 我的言辞也从来不会夸大\\n[00:52.883]让这爱国的情 化作激昂的火花\\n[00:54.931]合:\\n[00:55.145]我和我的祖国\\n[00:58.349]一刻也不能分割\\n[01:01.410]无论我走到哪里\\n[01:04.850]都流出一首赞歌\\n[01:08.366]我歌唱每一座高山\\n[01:11.659]我歌唱每一条河\\n[01:15.108]袅袅炊烟 小小村落 路上一道辙\\n[01:21.947]刘炫廷 verse:\\n[01:22.204]无论身在何方 让我们一起迈向新时代\\n[01:25.650]谱写新的篇章 华夏力量跨越五湖四海\\n[01:29.012]青年力量 我们代表祖国的未来\\n[01:32.305]把梦想怀揣 在 我胸怀\\n[01:33.782]不懈奋斗让生活更加精彩\\n[01:35.562]旭日东升 伟大巨龙即刻苏醒\\n[01:39.221]成长崛起乃是注定 我们立足于世界之林\\n[01:42.471]这份热爱 永不倦怠 迎难而上冲破阻碍\\n[01:46.503]振奋旋律 格外豪迈 终有天定响彻中外\\n[01:49.689]合:\\n[01:49.950]我和我的祖国\\n[01:52.916]一刻也不能分割\\n[01:56.205]无论我走到哪里\\n[01:59.720]都流出一首赞歌\\n[02:03.185]我歌唱每一座高山\\n[02:06.672]我歌唱每一条河\\n[02:09.949]袅袅炊烟 小小村落 路上一道辙\\n","songid":1399712957,"url":"http://music.163.com/song/media/outer/url?id=1399712957.mp3"},{"author":"中央乐团合唱团","link":"http://music.163.com/#/song?id=1304261116","pic":"http://p2.music.126.net/w0viJOXZgoULFGQeCdA3xw==/109951163497243319.jpg?param=300x300","type":"netease","title":"我和我的祖国","lrc":"[00:00.000] 作曲 : 秦咏诚\\n[00:01.000] 作词 : 张藜\\n[00:19.70]我和我的祖国\\n[00:23.91]一刻也不能分割\\n[00:28.21]无论我走到哪里\\n[00:32.51]都流出一首赞歌\\n[00:36.75]我歌唱每一座高山\\n[00:40.98]我歌唱每一条河\\n[00:45.56]袅袅炊烟\\n[00:47.64]小小村落\\n[00:49.81]路上一道辙\\n[00:54.55]我最亲爱的祖国\\n[01:00.01]我永远紧贴着你的心窝\\n[01:05.24]你用你那\\n[01:07.64]母亲的脉搏和我诉说\\n[01:34.27]我的祖国和我\\n[01:38.38]像海和浪花一朵\\n[01:42.83]浪是海的赤子\\n[01:47.24]海是那浪的依托\\n[01:51.52]每当大海在微笑\\n[01:55.78]我就是笑的旋涡\\n[02:00.30]我分担着海的忧愁\\n[02:04.71]分享海的欢乐\\n[02:09.16]我最亲爱的祖国\\n[02:14.55]你是大海永不干涸\\n[02:19.95]永远给我\\n[02:22.18]碧浪清波\\n[02:24.35]心中的歌\\n[02:28.99]我最亲爱的祖国\\n[02:34.28]你是大海永不干涸\\n[02:39.65]永远给我\\n[02:42.07]碧浪清波\\n[02:44.38]心中的歌\\n","songid":1304261116,"url":"http://music.163.com/song/media/outer/url?id=1304261116.mp3"},{"author":"隔壁老樊","link":"http://music.163.com/#/song?id=1394169337","pic":"http://p2.music.126.net/mXCez9PPPCZ_4EGqlZXevQ==/109951164395546408.jpg?param=300x300","type":"netease","title":"我和我的祖国","lrc":"[00:00.000] 作曲 : 秦咏诚\\n[00:01.000] 作词 : 张藜\\n[00:25.900]演唱:隔壁老樊\\n[00:29.900]我和我的祖国一刻也不能分割\\n[00:38.640]无论我走到哪里都流出一首赞歌\\n[00:46.980]我歌唱每一座高山我歌唱每一条河\\n[00:56.210]袅袅炊烟小小村落路上一道辙\\n[01:07.230]啦……\\n[01:18.159]你用你那母亲的脉搏和我诉说\\n[01:44.540]我的祖国和我像海和浪花一朵\\n[01:53.310]浪是那海的赤子海是那浪的依托\\n[02:02.269]每当大海在微笑我就是笑的旋涡\\n[02:10.870]我分担着海的忧愁分享海的欢乐\\n[02:21.860]啦…..\\n[02:32.800]永远给我碧浪清波心中的歌\\n[02:43.830]啦…….\\n[02:54.780]永远给我碧浪清波心中的歌\\n[03:03.960]\\n[03:07.930]制作人&#x
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值