01.python爬虫教程笔记——GET和POST

本文介绍了如何使用Requests库在Python中发送GET和POST请求,包括无参数GET请求、带有参数的GET请求以及POST请求的示例,还展示了如何处理服务器需要特定请求头的情况,并以百度翻译和DoubanAPI为例演示了POST请求的参数提交。
摘要由CSDN通过智能技术生成

Requests库处理GET和POST

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据。

get 请求

无参数请求

import requests 

content = '周杰伦'
response = requests.get(f'https://www.sogou.com/web?query={content}')
response.text

提示访问出错,原因服务器需要特定请求头,查看一下默认请求头

import requests

content = "周杰伦"
response = requests.get(f"https://www.sogou.com/web?query={content}")
response.request.headers

输出:

{
    "User-Agent": "python-requests/2.31.0",
    "Accept-Encoding": "gzip, deflate",
    "Accept": "*/*",
    "Connection": "keep-alive",
    "Cookie": "ABTEST=1|1695191285|v17; SNUID=0C9BF2A3D6D0D011AFBD2BE6D619FC09; IPLOC=CN6101; SUID=DA4D24755019870A00000000650A90F5; cuid=AAGtL+RnRwAAAAqHS2RBCQAAEAM=",
}

加入请求头的User-Agent访问:

import requests

head = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
}

content = "周杰伦"
response = requests.get(f"https://www.sogou.com/web?query={content}", headers=head)
response.text

get请求的参数请求

get请求也可以传递参数,例如

https://movie.douban.com/j/chart/top_list?type=20&interval_id=100%3A90&action=&start=0&limit=20

?后面即为参数=值,用&连接

import requests

head = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
}

url = "https://movie.douban.com/j/chart/top_list"
data = {
    "type": "20",
    "interval_id": "100:90",
    "action": "",
    "start": "0",
    "limit": "2",
}

content = "周杰伦"
response = requests.get(url, headers=head, params=data)
response.json()

输出

[{'rating': ['9.0', '45'],
  'rank': 1,
  'cover_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1021883305.jpg',
  'is_playable': True,
  'id': '1293181',
  'types': ['悬疑', '惊悚', '恐怖'],
  'regions': ['美国'],
  'title': '惊魂记',
  'url': 'https://movie.douban.com/subject/1293181/',
  'release_date': '1960-06-16',
  'actor_count': 30,
  'vote_count': 298061,
  'score': '9.0',
  'actors': ['安东尼·博金斯',
   '维拉·迈尔斯',
   '约翰·加文',
   '珍妮特·利',
   '马丁·鲍尔萨姆',
   '约翰·麦克因泰',
   '西蒙·奥克兰',
   '弗兰克·艾伯森',
   '帕特里夏·希区柯克',
   '沃恩·泰勒',
   '卢伦·塔特尔',
   '约翰·安德森',
   '莫特·米尔斯',
   '吉特·卡森',
   '维吉尼亚·格雷格',
   '阿尔弗雷德·希区柯克',
   '珍妮特·诺兰',
   '罗伯特·奥斯本',
   '海伦·华莱士',
   '沃尔特·培根',
   '弗朗西斯·德塞尔斯',
   '乔治·多克斯塔德',
   '乔治·埃尔德雷奇',
   '哈珀·弗莱厄蒂',
   '萨姆·弗林特',
   '弗兰克·基尔蒙德',
   '泰德·奈特',
   '帕特·麦卡弗里',
   '汉斯-乔基姆·默比斯',
   '弗雷德·谢威勒'],
  'is_watched': False},
 {'rating': ['8.8', '45'],
  'rank': 2,
  'cover_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p726839485.jpg',
  'is_playable': False,
  'id': '1417598',
  'types': ['悬疑', '惊悚', '恐怖'],
  'regions': ['美国'],
  'title': '电锯惊魂',
  'url': 'https://movie.douban.com/subject/1417598/',
  'release_date': '2004-01-19',
  'actor_count': 17,
  'vote_count': 537215,
  'score': '8.8',
  'actors': ['雷·沃纳尔',
   '加利·艾尔维斯',
   '丹尼·格洛弗',
   '梁振邦',
   '迪娜·迈耶',
   '迈克·巴特斯',
   '保罗·古德勒支',
   '迈克尔·爱默生',
   '本尼托·马丁内斯',
   '肖妮·史密斯',
   '麦肯兹·韦加',
   '莫妮卡·波特',
   '耐德·巴拉米',
   '亚丽姗德拉·全',
   '托宾·贝尔',
   '汉斯·雷斯',
   '奥伦·科尔斯'],
  'is_watched': False}]

处理 post 请求

POST请求往往需要提交参数,以百度翻译为例,其输入

在这里插入图片描述

import requests

head = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
}

# post 为 {kw:hello}
post_data = {"kw": "hello"}
query = "周杰伦"
response = requests.post("https://fanyi.baidu.com/sug", headers=head, data=post_data)
# 返回文本信息
response.text
'{"errno":0,"data":[{"k":"hello","v":"int. \\u6253\\u62db\\u547c; \\u54c8\\u55bd\\uff0c\\u5582; \\u4f60\\u597d\\uff0c\\u60a8\\u597d; \\u8868\\u793a\\u95ee\\u5019 n. \\u201c\\u5582\\u201d\\u7684\\u62db\\u547c\\u58f0\\u6216\\u95ee\\u5019\\u58f0 vi. \\u558a\\u201c\\u5582"},{"k":"hellos","v":"n. \\u5582( hello\\u7684\\u540d\\u8bcd\\u590d\\u6570 )"},{"k":"hellow","v":"\\uff08\\u901a\\u5e38\\u7684\\u62db\\u547c\\u8bed\\uff09\\u55e8\\uff0c \\uff08\\u6253\\u7535\\u8bdd\\u7528\\uff09\\u5582\\uff01\\uff0c \\uff08\\u82f1\\uff09\\uff08\\u8868\\u793a\\u60ca\\u8bb6\\uff09\\u54ce\\u54df"},{"k":"hello girl","v":"\\u5973\\u8bdd\\u52a1\\u5458; \\u5973\\u7535\\u8bdd\\u63a5\\u7ebf\\u5458"},{"k":"hello kitty","v":"n. \\u5361\\u901a\\u4e16\\u754c\\u4e2d; \\u6709\\u8fd9\\u6837\\u4e00\\u53ea\\u5c0f\\u732b; \\u6ca1\\u6709\\u5634\\u5df4; \\u8138\\u86cb\\u5706\\u5706\\u7684"}],"logid":2218552173}'
# 返回json数据
response.json()
{'errno': 0,
 'data': [{'k': 'hello',
   'v': 'int. 打招呼; 哈喽,喂; 你好,您好; 表示问候 n. “喂”的招呼声或问候声 vi. 喊“喂'},
  {'k': 'hellos', 'v': 'n. 喂( hello的名词复数 )'},
  {'k': 'hellow', 'v': '(通常的招呼语)嗨, (打电话用)喂!, (英)(表示惊讶)哎哟'},
  {'k': 'hello girl', 'v': '女话务员; 女电话接线员'},
  {'k': 'hello kitty', 'v': 'n. 卡通世界中; 有这样一只小猫; 没有嘴巴; 脸蛋圆圆的'}],
 'logid': 2218552173}

参考:https://www.bilibili.com/video/BV1NX4y1X7AE?p=9&spm_id_from=pageDriver&vd_source=e78d869c28d2119248eff5d85f195ece

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值