python用什么方法或者库可以拿到全部python爬取股票代码码

python requests模块的安装和使用方法
0人收藏此代码,
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的:
python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码。
我也看了下requests的文档,确实很简单,适合我这种懒人。下面就是一些简单指南。
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的:
python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码。
我也看了下requests的文档,确实很简单,适合我这种懒人。下面就是一些简单指南。
插播个好消息!刚看到requests有了中文翻译版,建议英文不好的看看,内容也比我的博客好多了,具体链接是:http://cn.python-requests.org/en/latest/(不过是v1.1.0版,另抱歉,之前贴错链接了)。
1.&nbsp安装
安装很简单,我是win系统,就在这里下载了安装包(网页中download&nbspthe&nbspzipball处链接),然后$&nbsppython&nbspsetup.py&nbspinstall就装好了。
当然,有easy_install或pip的朋友可以直接使用:easy_install&nbsprequests或者pip&nbspinstall&nbsprequests来安装。
至于linux用户,这个页面还有其他安装方法。
测试:在IDLE中输入import&nbsprequests,如果没提示错误,那说明已经安装成功了!
2.&nbsp小试牛刀
&&&import requests
&&& r = requests.get('http://www.zhidaow.com')
# 发送请求
&&& r.status_code
&&& r.headers['content-type']
# 返回头部信息
'text/ charset=utf8'
&&& r.encoding
# 编码信息
'utf-8'
&&& r.text
#内容部分(PS,由于编码问题,建议这里使用r.content)
u'&!DOCTYPE html&\n&html xmlns=&http://www.w3.org/1999/xhtml&...'
#该代码片段来自于: http://www.sharejs.com/codes/python/9013
是不是很简单?比urllib2和urllib简单直观的多?!那请接着看快速指南吧。
3.&nbsp快速指南
3.1&nbsp发送请求
发送请求很简单的,首先要导入requests模块:
>>>import&nbsprequests
接下来让我们获取一个网页,例如我个人博客的首页:
>>>r&nbsp=&nbsprequests.get('http://www.sharejs.com')
接下来,我们就可以使用这个r的各种方法和函数了。
另外,HTTP请求还有很多类型,比如POST,PUT,DELETE,HEAD,OPTIONS。也都可以用同样的方式实现:
&&& r = requests.post(&http://httpbin.org/post&)
&&& r = requests.put(&http://httpbin.org/put&)
&&& r = requests.delete(&http://httpbin.org/delete&)
&&& r = requests.head(&http://httpbin.org/get&)
&&& r = requests.options(&http://httpbin.org/get&)
#该代码片段来自于: http://www.sharejs.com/codes/python/9013
因为目前我还没用到这些,所以没有深入研究。
3.2&nbsp在URLs中传递参数
有时候我们需要在URL中传递参数,比如在采集百度搜索结果时,我们wd参数(搜索词)和rn参数(搜素结果数量),你可以手工组成URL,requests也提供了一种看起来很NB的方法:
&&& payload = {'wd': '张亚楠', 'rn': '100'}
&&& r = requests.get(&http://www.baidu.com/s&, params=payload)
&&& print r.url
u'http://www.baidu.com/s?rn=100&wd=%E5%BC%A0%E4%BA%9A%E6%A5%A0'
上面wd=的乱码就是“张亚楠”的转码形式。(好像参数按照首字母进行了排序。)
3.3&nbsp获取响应内容
可以通过r.text来获取网页的内容。
&&& r = requests.get('https://www.zhidaow.com')
&&& r.text
u'&!DOCTYPE html&\n&html xmlns=&http://www.w3.org/1999/xhtml&...'
文档里说,requests会自动将内容转码。大多数unicode字体都会无缝转码。但我在cygwin下使用时老是出现UnicodeEncodeError错误,郁闷。倒是在python的IDLE中完全正常。
另外,还可以通过r.content来获取页面内容。
&&& r = requests.get('https://www.zhidaow.com')
&&& r.content
b'&!DOCTYPE html&\n&html xmlns=&http://www.w3.org/1999/xhtml&...'
文档中说r.content是以字节的方式去显示,所以在IDLE中以b开头。但我在cygwin中用起来并没有,下载网页正好。所以就替代了urllib2的urllib2.urlopen(url).read()功能。(基本上是我用的最多的一个功能。)
3.4&nbsp获取网页编码
可以使用r.encoding来获取网页编码。
&&& r = requests.get('http://www.zhidaow.com')
&&& r.encoding
'utf-8'
当你发送请求时,requests会根据HTTP头部来猜测网页编码,当你使用r.text时,requests就会使用这个编码。当然你还可以修改requests的编码形式。
&&& r = requests.get('http://www.zhidaow.com')
&&& r.encoding
'utf-8'
&&&r.encoding = 'ISO-;
像上面的例子,对encoding修改后就直接会用修改后的编码去获取网页内容。
3.5&nbspjson
像urllib和urllib2,如果用到json,就要引入新模块,如json和simplejson,但在requests中已经有了内置的函数,r.json()。就拿查询IP的API来说:
&&&r = requests.get('http://ip.taobao.com/service/getIpInfo.php?ip=122.88.60.28')
&&&r.json()['data']['country']
'中国'
3.6&nbsp网页状态码
我们可以用r.status_code来检查网页的状态码。
&&&r = requests.get('http://www.mengtiankong.com')
&&&r.status_code
&&&r = requests.get('http://www.mengtiankong.com/123123/')
&&&r.status_code
&&&r = requests.get('http://www.baidu.com/link?url=QeTRFOS7TuUQRppa0wlTJJr6FfIYI1DJprJukx4Qy0XnsDO_s9baoO8u1wvjxgqN')
u'http://www.zhidaow.com/
&&&r.status_code
#该代码片段来自于: http://www.sharejs.com/codes/python/9013
前两个例子很正常,能正常打开的返回200,不能正常打开的返回404。但第三个就有点奇怪了,那个是百度搜索结果中的302跳转地址,但状态码显示是200,接下来我用了一招让他原形毕露:
&&&r.history
(&Response [302]&,)
这里能看出他是使用了302跳转。也许有人认为这样可以通过判断和正则来获取跳转的状态码了,其实还有个更简单的方法:
&&&r = requests.get('http://www.baidu.com/link?url=QeTRFOS7TuUQRppa0wlTJJr6FfIYI1DJprJukx4Qy0XnsDO_s9baoO8u1wvjxgqN', allow_redirects = False)
&&&r.status_code
只要加上一个参数allow_redirects,禁止了跳转,就直接出现跳转的状态码了,好用吧?我也利用这个在最后一掌做了个简单的获取网页状态码的小应用,原理就是这个。
3.7&nbsp响应头内容
可以通过r.headers来获取响应头内容。
&&&r = requests.get('http://www.zhidaow.com')
&&& r.headers
'content-encoding': 'gzip',
'transfer-encoding': 'chunked',
'content-type': 'text/ charset=utf-8';
可以看到是以字典的形式返回了全部内容,我们也可以访问部分内容。
&&& r.headers['Content-Type']
'text/ charset=utf-8'
&&& r.headers.get('content-type')
'text/ charset=utf-8'
3.8&nbsp设置超时时间
我们可以通过timeout属性设置超时时间,一旦超过这个时间还没获得响应内容,就会提示错误。
&&& requests.get('http://github.com', timeout=0.001)
Traceback (most recent call last):
File &&stdin&&, line 1, in &module&
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)
#该代码片段来自于: http://www.sharejs.com/codes/python/9013
3.9&nbsp代理访问
采集时为避免被封IP,经常会使用代理。requests也有相应的proxies属性。
import requests
proxies = {
&http&: &http://10.10.1.10:3128&,
&https&: &http://10.10.1.10:1080&,
requests.get(&http://www.zhidaow.com&, proxies=proxies)
如果代理需要账户和密码,则需这样:
proxies = {
&http&: &http://user:pass@10.10.1.10:3128/&,
3.10&nbsp请求头内容
请求头内容可以用r.request.headers来获取。
&&& r.request.headers
{'Accept-Encoding': 'identity, deflate, compress, gzip',
'Accept': '*/*', 'User-Agent': 'python-requests/1.2.3 CPython/2.7.3 Windows/XP'}
3.11&nbsp自定义请求头部
伪装请求头部是采集时经常用的,我们可以用这个方法来隐藏:
r = requests.get('http://www.zhidaow.com')
print r.request.headers['User-Agent']
#python-requests/1.2.3 CPython/2.7.3 Windows/XP
headers = {'User-Agent': 'alexkh'}
r = requests.get('http://www.zhidaow.com', headers = headers)
print r.request.headers['User-Agent']
#该代码片段来自于: http://www.sharejs.com/codes/python/9013
3.12&nbsp持久连接keep-alive
requests的keep-alive是基于urllib3,同一会话内的持久连接完全是自动的。同一会话内的所有请求都会自动使用恰当的连接。
也就是说,你无需任何设置,requests会自动实现keep-alive。
4.&nbsp简单应用
4.1&nbsp获取网页返回码
def get_status(url):
r = requests.get(url, allow_redirects = False)
return r.status_code
print get_status('http://www.zhidaow.com')
print get_status('http://www.zhidaow.com/hi404/')
print get_status('http://mengtiankong.com')
print get_status('http://www.baidu.com/link?url=QeTRFOS7TuUQRppa0wlTJJr6FfIYI1DJprJukx4Qy0XnsDO_s9baoO8u1wvjxgqN')
print get_status('http://www.huiya56.com/com8.intre.asp?46981.html')
#该代码片段来自于: http://www.sharejs.com/codes/python/9013
1、官方文档
requests的具体安装过程请看:http://docs.python-requests.org/en/latest/user/install.html#install
requests的官方指南文档:http://docs.python-requests.org/en/latest/user/quickstart.html
requests的高级指南文档:http://docs.python-requests.org/en/latest/user/advanced.html#advanced
2、本文内容部分翻译自官方文档,部分自己归纳。
3、大多数用的IDLE格式,累死了,下次直接用编辑器格式,这样更符合我的习惯。
4、还是那句话,有问题留言或email。
5、图注:requests官方文档上的一只老鳖。
相关代码片段:
最新Python代码片段
合作网站:Python第三方库的安装方法总结
转载 & & 作者:人世间
库library是一个泛称,一般值作为文件形式存在的模块以及以文件夹形式存在的包的合成,这里作了Python第三方库的安装方法总结,包括源码安装、包管理器安装以及虚拟环境相关安装三种方式的讲解
Python 是一门优雅的语言,简洁的语法,强大的功能。当然丰富的第三方库,更能加速开发。那么问题来了,如何安装这些第三方库(包)呢?
安装第三方库的方式其实不多。下面就介绍一些技巧。
很多第三方库都是开源的,几乎都可以在github 或者 pypi上找到源码。找到源码格式大概都是 zip 、 tar.zip、 tar.bz2格式的压缩包。解压这些包,进入解压好的文件夹,通常会看见一个 setup.py 的文件。打开命令行,进入该文件夹。运行
python setup.py install
这个命令,就能把这个第三库安装到系统里,也就是你的 Python 路径,windows大概是在 C:\Python2.7\Lib\site-packages。
Linux会在 /usr/local/lib/python2.7/dist-packages。
Mac 应该在 /Library/Python/2.7/site-packages。如果是在 virtulenv环境下安装,这个包就被安装在所建立的虚拟环境下的 site-packages/目录下。想要卸载这些库也很简单,进入 site-packages,直接删掉库文件就 OK 啦。当然,这些安装可能有一点麻烦,需要下载,解压,再运行安装,卸载也不是很方便。有没有一种工具,可以帮外面管理这些库呢?
包管理器 (pip 和 easy_install)
现在很多编程语言,都带有包管理器,例如 Ruby 的 gem,nodejs的npm。Python当然也不例外,拥有大名鼎鼎的 pip和 easy_install。
前面说到的pypi就是一些 python第三库所在的源,使用 pip 或者 easy_install 安装模块,会搜索这个源,然后自动下载安装。比如我们需要安装 flask 框架具体命令如下:
pip install flask
easy_install flask
简单吧,一个简单的命令就搞定。卸载也很方便,例如我们需要卸载flask
pip uninstall flask
查看所安装的包,包括系统自带的和手动安装的
还可以搜索包
pip search flask
还可以重定向输出项目使用的库。
pip freeze & requirements.txt
这样就会把该环境下的第三方库重定向到 requirements.txt文件内,如果给别人安装项目的依赖,只需要运行:
pip install -r requirements.txt
很方便吧。当然,有时候,我们的网络并不是那么顺畅,pip是在线安装的,可不可以离线呢?当然可以啦,pip install 的第一步,就是在 pypi 上寻找包,然后下载到本地。如果网络不好,可以先建一个本地的仓库,把常用的包离线下载。比如可以下载 flask 的源码
pip intall flask-master.zip
同样也可以安装。
虚拟环境相关安装
当然,上面介绍的,其实也是很普通很常见的方式,也算不上什么技巧。下面介绍的,则是一些需要了解原理和解决非常规问题的技巧。
使用Python,我们会喜欢用 virtualenv建立虚拟环境,例如建立一个 venv的虚拟环境。我们只需要 source进去就可以使用pip安装了。可是有时候,即使在虚拟环境下,使用了sudo的前缀(windows忽略),那么安装的库不是在虚拟环境,而是被安装到系统下的site-package 目录下了。
windows的用户可能会很开心,不需要注意这个问题。当然 windows 也同样有着自己的问题。在 windows上安装python,一般是编译好的二进制包exe可执行文件。通常有 32位和64位的python。对于第三方库,本来32和64不会有太大的差别。但是对于一些C写的python库,如mysqldb,PIL, pillow,会发现使用 pip或者 easy_install 的方式会报错:
Fixing python error: Unable to find vcvarsall.bat
原因大概是 windows上缺少一些 C编译器东东。源码需要编译一下才能安装,此时 windows就很苦逼了。当然,有一些好心人,帮您把常用的一些库编译成 exe 可执行文件,放到了这个站点。你只需要寻找对于版本的,下载一键安装。
可是,还有一个问题,下载 exe 文件,运行安装,这个库是被安装到了系统的 site-package 目录下,如果我在windows 建立了venv虚拟环境,这样安装不是歇菜了么?
别担心,这个文章的真正技巧,就是为了解决这个问题的。我们来安装64位的 mysqldb。先下载 MySQL‑python&#.5.win‑amd64‑py2.7.exe 在 windows 上,用命令行进入虚拟环境 venv。然后运行
easy_install MySQL‑python&#.5.win‑amd64‑py2.7.exe
完美解决,在 venv 虚拟环境,将mysqldb 库安装到了venv下。
有了上面三个方式,几乎涵盖 python 所有平台的第三方库安装。不过话说回来,尽管 Python 是跨平台,开发环境,还是尽量使用 Linux或者MacOS,这两个系统有更好的工具以及省去很多莫名其妙的问题。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具话说 python一般都用什么数据库啊?_python吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:173,469贴子:
话说 python一般都用什么数据库啊?收藏
rt 感觉sql要多点 是我的错觉么?
来自再也不相信爱情的小丑
sqlite,MySql我暂时用这两个
登录百度帐号python一些常用方法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
python一些常用方法
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩17页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢记住登录一个月
还能输入:200字
当前位置:
共94 个代码
共94 个代码

我要回帖

更多关于 python 股票代码 的文章

 

随机推荐