python requests get post_学习笔记(2) [Python爬虫]Requests:GET和POST方法

一般而言,想要获取网站页面上的信息,有两种方法:GET和POST。我们打开浏览器,点开一个网页(我这边用的是火狐浏览器),然后按下F12,点开它的"网络选项",会发现出现了如下界面,我们可以看到方法那一栏的"GET"。采用GET获取信息

既然只是笔记,我就记得随意一点,通俗一点。

GET方法就是直接获取页面上的信息,而POST是向网站发送一个清单,网站根据清单执行某些特定的操作,然后返回信息。

在Python中,使用这两种方法需要使用模组requests。

以哔哩哔哩的一个api为例,"https://api.bilibili.com/x/v2/reply?pn=page(page一个数字,代表页数)&type=1&oid=AVID(AVID就是一个视频的av号)&sort=2" ,通过对这个网址的GET操作,我们可以获取网址返回的信息。 以我的一个视频为例,其av号为882742969,我想查看这个视频第一页的评论。不妨先直接在网站上输入这个网址查看结果:"https://api.bilibili.com/x/v2/reply?pn=1&type=1&oid=882742969&sort=2"可以看到网站返回了一个JSON文件

JSON文件我并不是很了解,但是我觉得它就像是一个MAP,每个key都有一个对应的值。像生活中的字典检索表。

在Python中,我们可以实现上面操作。

import requests #需要requests模块

import json #需要json模块来处理json文件

url = 'https://api.bilibili.com/x/v2/reply?pn=1&type=1&oid=882742969&sort=2' #存放网址

result = requests.get(url) #获取页面上的信息 调用requests.get函数

resultContent = json.loads(result.text) #获取json文件里的内容

print(resultContent)

控制台输出结果为:控制台输出结果

网页上直接查看JSON文件

显然,我们成功获取了JSON文件中的内容,下面我们可以处理我们需要的信息了。这个就很简单了,和C++ STL库里的map是一样的,用key作为容器的序号来获取其对应的值。JSON文件中的信息

分析信息,发现replies(replies在data这个key下)这个key下存放的就是评论信息,0下存放着第一条评论的相关信息,包括用户信息和评论信息。content下的message就存放着我们需要的评论信息。我们试着输出print(resultContent['data']['replies'][0]['content']['message'])控制台的输出

这正是我的视频下的第一条评论。到此,我们已经实现了GET方法。

接下来实现POST方法,以有道翻译为例,我们打入“起飞”并且翻译,看到网络请求那边多了一个POST方法。POST方法

打开右边的消息头,参数和选项,我们看到如下信息:消息头

参数

响应

POST实现方法和GET类似,只不过在函数的参数多加了个表单和请求头。

这边的url复制消息图的请求网址,同时复制请求头和表单信息,代码如下

import requests

import json

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'

headers ={

'Host': 'fanyi.youdao.com',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0',

'Accept': 'application/json, text/javascript, */*; q=0.01',

'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',

'Accept-Encoding': 'gzip, deflate',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'X-Requested-With': 'XMLHttpRequest',

'Content-Length': '260',

'Origin': 'http://fanyi.youdao.com',

'Connection': 'keep-alive',

'Referer': 'http://fanyi.youdao.com/',

'Cookie': 'YOUDAO_MOBILE_ACCESS_TYPE=1; OUTFOX_SEARCH_USER_ID=-1456668739@10.169.0.83; OUTFOX_SEARCH_USER_ID_NCOO=763697263.1371856; JSESSIONID=aaaeDH1zuXfg860X50_gx; ___rl__test__cookies=1588045743097'}

fromData = {"i":"起飞\n","from":"AUTO","to":"AUTO","smartresult":"dict","client":"fanyideskweb","salt":"15880445399187","sign":"3064ec4bec4669034a4278e80b202ee4","ts":"1588044539918","bv":"e2a78ed30c66e16a857c5b6486a1d326","doctype":"json","version":"2.1","keyfrom":"fanyi.web","action":"FY_BY_REALTlME"}

result = requests.post(url, data = fromData, headers = headers)

resultContent = json.loads(result.text)

print(resultContent)

print(resultContent['translateResult'][0][0]['tgt'])

控制台的结果为:控制台结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值