Python爬虫教程-07-post介绍(百度翻译)(上)

访问网络两种方法

get:

  • 利用参数给服务器传递信息
  • 参数为dict,使用parse编码

post :(今天给大家介绍的post)

  • 一般向服务器传递参数使用
  • post是把信息自动加密处理
  • 使用post传递信息,需要用到data参数
  • 使用post意味着http的请求头信息可能需要更改:
    • Content-Type:application/x-www.form-urlencode
    • Content-Length:数据长度
    • 简而言之,一旦更改请求的方法,注意其他请求头部信息相适应
  • urllib.parse.urlencode可以将字符串自动转换成上面的格式

案例v7

post经典案例,就是百度翻译

  • 利用parse模块模拟post请求
  • 分析步骤

1.打开开发者工具F12>【Network】>【XHR】>【Headers】

2.尝试简单的单词,查看发出的请求

3.找到请求地址URL,请求的方式Method

4.找到参数的传递格式Content-Type, 参数样式Form Data

编写代码

# 案例v7百度翻译
from urllib import request,parse
# 导入json包,负责处理json格式的模块
import json

''' 大致流程: 1.利用data构造内容,然后urlopen打开 2.返回一个json格式的结果 3.结果就应该是服务器返回的释义 '''

baseurl = 'http://fanyi.baidu.com/sug'
# 存放用来模拟form的数据,一定是dict格式
keyword = input("请输入需要翻译的内容:")
data = {
    'kw': keyword
}
# print(data)

# 需要使用parse模块对data进行编码
data = parse.urlencode(data)
data = data.encode('utf-8')
# print("编码后的data:",data)
# print("编码后的data类型:",type(data))
# 当需要类型为bytes时:在数据的后面加上: data = data.encode('utf-8')

# 构造请求头,请求头部至少包含:
# 1.传入数据的长度
# 2.request要求传入的请求是一个dict格式

# 有了headers,data,url就可以尝试发出请求
rsp = request.urlopen(baseurl,data=data)

json_data = rsp.read().decode()

# 把json字符串转换为字典
json_data = json.loads(json_data)
# print(json_data)

for item in json_data['data']:
    if item['k'] == keyword:
        print(item['k'], ": ", item['v'])

运行结果

《Python爬虫教程-07-post介绍(百度翻译)(上)》
《Python爬虫教程-07-post介绍(百度翻译)(上)》

原文:

https://blog.csdn.net/qq_40147863/article/details/81673434blog.csdn.net

    原文作者:NicePython
    原文地址: https://zhuanlan.zhihu.com/p/62247620
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞