【爬虫】1.3 GET方法访问网站

访问网站最常用的一种方式是GET方法。

这种方式主要用于客户端从服务器获取网站数据,如果有交互,客户端把参数附加在网址的后面向服务器提供参数,服务器接收这些参数后作不同的响应。

1.客户端GET方式发送数据


GET方式发送使得数据附加在URL后面,在URL后面先接一个"?"号,数据采用”名称1=值1&名称2=值2……“的方式,多个数据之间用”&“符号隔开。

例如,向服务器传递省份和城市的数据就可以这样写:


urllib.request.urlopen("http://127.0.0.1:5000?province=GD&city=SZ")

如果参数包含汉字,那么必须使用urllib.parse.quote对参数值进行编码。例如:


province=urllib.parse.quote("广东")
city=urllib.parse.quote("深圳")
urllib.request.urlopen("http://127.0.0.1:5000?+province="+province+"&city="+city)

客户端程序client.py如下:


# 客户端Get方式发送数据
import urllib.parse
import urllib.request
url = "http://127.0.0.1:5000"
try:
    province = urllib.parse.quote("广东")
    city = urllib.parse.quote("深圳")
    data = "province="+province+"&city="+city
    html = urllib.request.urlopen("http://127.0.0.1:5000?"+data)
    html = html.read()
    html = html.decode()
    print(html)
except Exception as err:
    print(err) 

2.服务器获取GET发送的数据


服务器用Flask中的request对象的args来存储GET的参数,用get方法来获取参数,即用flask.request.args.get(参数)来获取参数的值。例如:如下...就可以获取GET传递的参数province与city的值。


province=flask.request.args.get("province")
city=flask.request.args.age("city")

服务器程序server.py如下:


# 服务器获取GET发送的数据
importflask
​
app=flask.Flask(__name__)
​
​
@app.route("/")
defindex():
    try:
        province=flask.request.args.get("province")
        city=flask.request.args.get("city")
        returnprovince+","+city
    exceptExceptionaserr:
        returnstr(err)
​
​
if__name__=="__main__":
    app.run()

先运行server.py建立Web网站,再运行client.py,可以看到client.py的运行结果:

注意:Web网址是http://127.0.0.1:5000,如果直接访问这个网站会出现错误:

因为没有提供province与city参数。服务器执行:


province=flask.request.args.get("province")
city=flask.request.args.get("city")

这时会到args中查找province和city的参数的值,结果因没有找到而出现错误。

为了避免这种错误,可与改写为:

这样,在“province”和“city”没有出现在flask.reauest.args中时,province、city值就设置为空字符串。

服务器程序该进如下:

# 服务器获取GET发送的数据

importflask

​

app=flask.Flask(__name__)

​

@app.route("/")

defindex():

try:

province=flask.request.args.get("province") if"province"inflask.request.argselse""

city=flask.request.args.get("city") if"city"inflask.request.argselse""

returnprovince+","+city

exceptExceptionaserr:

returnstr(err)

​

if__name__=="__main__":

app.run()

下一篇文章:1.4 POST 方法向网站发送数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值