python-爬虫基础-调用api接口或网页

目录

GET

POST


之前写过一篇文章,主要介绍python提供api服务。本节主要介绍python对api服务的调用,也是爬虫的基础。调用api服务主要是用python自带的urllib库。

本节先介绍两个例子,对api进行GET和POST调用。调用的api为上节课提供的例子。api接口服务

urllib提供了一系列用于操作URL的功能。

  • GET

urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面或api接口,然后返回HTTP的响应:

代码片段:

import urllib.request
import urllib.parse

url='http://127.0.0.1:8899/login?name=admin&pwd=admin'  #调用的网址
# 设置header头跟post请求方式相同
# headers={"User-Agent": "Mozilla...."}
# req = urllib.request.Request(r'https://www.baidu.com/',headers=headers)
print("get请求")
web= urllib.request.urlopen(url)
print("二进制返回结果")
print(web)
print("解析后的结果")
f=web.read()
print(f)

返回结果:

二进制返回结果

解析后的结果
b'{"code": 200, "message": "success"}'
  • POST

如果要以POST发送一个请求,只需要把参数data以bytes形式传入。header两种方法,见下面代码片段的注释

'''
加header头两种方法
方法一:
headers = {'Host': 'test.lesson-contents.i.vipcode.com',
           'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
           'Accept': r'application/json, text/javascript, */*; q=0.01',
           'Referer': r'http://test.lesson-contents.i.vipcode.com', }
req = urllib.request.request(r'http://test.lesson-contents.i.vipcode.com/api/contents/anon/scratch/material/user/list', headers=headers)

方法二:
res = urllib.request.Request(url=req_url)
resp = res.add_header('Host','test.lesson-contents.i.vipcode.com')
resp = res.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)')
...

'''

# post请求参数需要准成二进制类型
params = bytes(urllib.parse.urlencode({'name':'admin','pwd':'admin'}), encoding=  'utf8')
print("post请求")
web = urllib.request.urlopen('http://127.0.0.1:8899/login',params)
#获取结果
f = web.read()
print(f)

返回结果

b'{"code": 200, "message": "success"}'

 

你可能感兴趣的:(Python)