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请求中包含的数据进行相应的处理,并返回相应的数据给客户端。