Python网络请求模块urllib、requests
Python给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是urllib、requests这两个模块。
urllib.request提供了一个urlopen函数,来实现获取页面。支持不同的协议、基本验证、cookie、代理等特性。urllib有两个版本urllib以及urlliburllib2能够接受Request对象,urllib则只能接受url。urllib提供了urlencode函数来对GET请求的参数进行转码,urllib2没有对应函数。urllib抛出了一个URLError和一个HTTPError来处理客户端和服务端的异常情况。
Requests是一个简单易用的,用Python编写的HTTP库。这个库让我们能够用简单的参数就完成HTTP请求,而不必像urllib一样自己指定参数。同时能够自动将响应转码为Unicode,而且具有丰富的错误处理功能。
InternationalDomainsandURLsKeep-Alive&ConnectionPoolingSessionswithCookiePersistenceBrowser-styleSSLVerificationBasic/DigestAuthenticationElegantKey/ValueCookiesAutomaticDecompressionUnicodeResponseBodiesMultipartFileUploadsConnectionTimeouts.netrcsupportListitemPython6—4Thread-safe
以下为一些示例代码,本文环境为Python6
无需参数直接请求单个页面
HTTP是基于请求和响应的工作模式,urllib.request提供了一个Request对象来代表请求,因此上面的代码也可以这么写
Request对象可以增加header信息
或者直接将header传入Request构建函数。带参数的GET请求
带有参数的请求和上面的例子本质一样,可以事先拼出URL请求字符串,然后再进行请求。本例使用了腾讯的股票API,可以传入不同的股票代码以及日期,查询对应股票在对应时间的价格、交易信息。
发送POST请求
urllib没有单独区分GET和POST请求的函数,只是通过Request对象是否有data参数传入来判断。
文章为作者独立观点,不代表股票交易接口观点