【爬虫基础】第4讲 GET与POST请求

本文介绍了GET请求在Web开发中的使用,包括其功能、特点以及如何通过Python实现。同时,对比了GET和POST请求的区别,着重讲解了POST请求用于提交数据和文件的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GET请求

GET请求是一种HTTP方法,用于向服务器获取(或读取)数据。它是Web开发中最常用的请求方式之一。对于GET请求,客户端向服务器发送一个HTTP请求,服务器返回请求的资源。GET请求通常用于获取静态资源,比如HTML页面、图片、CSS文件等。GET请求可以通过URL参数传递数据,参数会附加在URL的末尾,例如:https://www.example.com/search?q=keyword

GET请求的特点是安全性较低,因为请求的参数是直接暴露在URL中,容易被拦截和篡改。因此,GET请求不适合传输敏感数据,如密码等。

方式一:使用quoto方法

from urllib.request import urlopen,Request
from fake_useragent import UserAgent
from urllib.parse import quote

args = input('请输入要搜索的内容:')
ua = UserAgent()
url = f'https://www.baidu.com/s?wd={quote(args)}'
headers = {
    'User-Agent':ua.chrome
}
req = Request(url,headers=headers)
resp = urlopen(req)
print(resp.read().decode())

方式二:使用urlencode方法

from urllib.request import urlopen,Request
from fake_useragent import UserAgent
from urllib.parse import urlencode

args = input('请输入要搜索的内容:')
parms = {
    'wd':args,

}
ua = UserAgent()
url = f'http://www.baidu.com/s?{urlencode(parms)}'

headers = {
    'User-Agent':ua.chrome
}

req = Request(url,headers=headers)
resp = urlopen(req)
print(resp.read().decode())

案例1

使用get请求抓取某同城的二手车数据

from urllib.request import urlopen,Request
from fake_useragent import UserAgent
from urllib.parse import quote
args = input('请输入品牌,使用中文全拼格式:')

url =f'https://wz.58.com/{quote(args)}/'
headers = {
    'User-Agent':UserAgent().chrome
}
req = Request(url,headers=headers)
resp = urlopen(req)

print(resp.read().decode())

执行结果:

案例2

1.choice() 方法返回一个列表,元组或字符串的随机项。

import random
random.choice( seq  )


2.urlencode构造完整的链接URL
**语法:**

from urllib.parse import  urlencode
args= {'wd':'尚学堂'}
url = "https://www.baidu.com/s?{}".format(urlencode(args))

代码实现

from urllib import request
from urllib.request import urlopen 
from random import  choice
from urllib.request import  Request
from fake_useragent import  UserAgent
#传参方法1
"""
from urllib.parse import  quote
url = "https://www.baidu.com/s?wd={}".format(quote("尚学堂"))
"""
#传参方法2

from urllib.parse import  urlencode
args= {'wd':'尚学堂'}
url = "https://www.baidu.com/s?{}".format(urlencode(args))

headers={
    "User-Agent":UserAgent().random
}
print(url)
request =Request(url,headers=headers)
response = urlopen(request)
info = response.read()
print(info.decode('utf-8'))

POST请求

POST请求是一种HTTP请求方法,用于向服务器提交数据。与GET请求不同,POST请求的数据不会附加在URL中,而是作为请求的body部分进行发送。POST请求常用于向服务器提交表单数据、上传文件等操作。

from urllib.request import Request,urlopen
from fake_useragent import UserAgent
from urllib.parse import urlencode

url ='https://cn.bing.com/search'
headers ={
    'User-Agent':UserAgent().chrome
}
keyword = input('请输入查询的内容:')
args ={
    'q':f'{keyword}'
}

f_data=urlencode(args)
req = Request(url,headers=headers,data=f_data.encode())
resp = urlopen(req)
print(resp.read().decode())

POST请求的body部分是一个JSON字符串{"username": "john", "password": "password123"},用于向服务器传递用户名和密码。需要注意的是,POST请求的body部分的格式可以根据实际需要而定,可以是JSON、XML、表单数据等格式。通过POST请求,客户端可以向服务器发送数据并获取服务器的响应。服务器可以根据POST请求中包含的数据进行相应的处理,并返回相应的数据给客户端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值