python3.5.3rc1学习十:网络请求

#sys模块
import sys

sys.stderr.write('This is stderr text ')
# 因为从定向有缓冲区,所以需要以下这行代码
sys.stderr.flush()
sys.stdout.write('This is stdout text ')

# 获取命令行参数,默认sys.argv[0]表示代码本身文件路径
print(sys.argv)
print("------------------------------")

import urllib.request

# 向web服务器发送一个请求,打开百度学术首页
##x = urllib.request.urlopen("http://xueshu.baidu.com/")
##
##print(x.read())

import urllib.parse

# 发送一个带参数的请求

url = 'http://php.weather.sina.com.cn/search.php'

values = {
'city':'北京',
'dpc':'1'
}

'''''
city=北京,这个字段需要转码,转成后是%B1%B1%BE%A9
你可以打开http://php.weather.sina.com.cn,搜索北京看看是不是这个转码
这个转码过程就叫encode

'''
data = urllib.parse.urlencode(values)
# 参数的编码格式是Unicode,这里用utf-8,最适合网络传输的编码协议
data = data.encode('utf-8')
# 调用一个有url和参数的请求,通过Request(url,data)
req = urllib.request.Request(url,data)
resq = urllib.request.urlopen(req)
# 定义一个响应返回数据respData,也就是读取查询北京天气的页面
respData = resq.read()
# 打印北京天气查询结果页的源代码
print(respData)

原文地址:https://www.cnblogs.com/51testing/p/7928548.html