如何用python3爬虫抓取图片股市数据并生成分析报表

使用爬虫获取股票信息 - 简书
使用爬虫获取股票信息
使用的东方财富,因为电脑端信息量太大,所以使用手机端。东方财富有限制,如果是经常访问会有错误。并不是写错了。比如
请求的规则
url = "http://m2./h5stock/6017661.html"
http://m2./h5stock/6000061.html
可以看出xxxxxx是股票名称。多加了1。如果我们让用户输入股票名称就要拼接
url = "http://m2./h5stock/"
rl = input("请输入代码")
full_url = url + rl + "1.html"
Python3和Python2的input/print写法不一样。Python2写法是raw_input
print ""Python3写法是input
print()注意缩进。
再加个正则表达式
如果是粗略看股票行情,一般就是看价格、涨幅、成交量、换手率、市值、涨跌价格、市盈率。
nameP = re.compile(r'&span class="name"&(.*?)&/span&')
name = nameP.findall(webData)
# xjP = re.compile(r'&span class="xj".*?&(.*?)&/span&')
# # xj = xjP.findall(webData)
# zdfP = re.compile(r'&span class="zdf"&(.*?)&/span&')
# zdf = zdfP.findall(webData)
# hslP = re.compile(r'&span class="hsl"&(.*?)&/span&')
# hsl = hslP.findall(webData)
sylP = re.compile(r'&span class="syl"&(.*?)&/span&')
syl = sylP.findall(webData)
zszP = re.compile(r'&span class="zsz"&(.*?)&/span&')
zsz = zszP.findall(webData)
再将文件写入本地
f=open('test.txt','w')
f.write(str(ite))后使用快捷导航没有帐号?
Python金融股票爬虫实战源码大全
查看: 24746|
评论: 0|原作者: 阿橙|来自: Python中文社区
摘要: Stock - 终端实时获取股票价格,实时查询股票价格,默认查询了沪指、深指。需要安装requests库,通过调用新浪股票API,实时查询股票价格,支持查询多支股票,通过threading多线程同时查询结果tushare - 是实现对股票 ...
Stock [1]- 终端实时获取股票价格,实时查询股票价格,默认查询了沪指、深指。需要安装requests库,通过调用新浪股票API,实时查询股票价格,支持查询多支股票,通过threading多线程同时查询结果tushare [2]- 是实现对股票/期货等金融数据从数据采集、清洗加工 到 数据存储过程的工具,满足金融量化分析师和学习数据分析的人在数据获取方面的需求,它的特点是数据覆盖范围广,接口调用简单,响应快速chinastock [3]- 中国股票行情数据分析。能够获得股票部分金融数据、日线,周线,60分钟数据线,月线,30分钟数据及历史数据。该项目依赖于httplib2,和beautifulsoup。python开发环境是2.7.5Stockholm [4]- 一个股票数据(沪深)爬虫和选股策略测试框架,数据基于雅虎YQL和新浪财经。根据选定的日期范围抓取所有沪深两市股票的行情数据。根据指定的选股策略和指定的日期进行选股测试。计算选股测试实际结果。支持使用表达式定义选股策略和多线程处理。easyquotation [5]- 实时获取新浪 / Leverfun 的免费股票以及 level2 十档行情 / 集思路的分级基金行情。获取新浪的免费实时行情、腾讯财经的免费实时行情、leverfun 的免费 Level 2 十档行情、集思路的分级基金数据。开发环境 : Ubuntu 15.10 / Python 3.5。get_recommend_stock [6]- 抓取同花顺level2广告页股票推荐数据,并发送邮件给指定邮箱。涉及简单的jsonp解析以及如何使用python发送邮件的操作。stocks [7]- 每天从网上抓取股票数据并保存到本地以供分析,包括A股、中小板、创业板股票。上班时候可以偷偷看。。。mystock [8]- 查看实时查看股票信息(国内股票),再也不用偷偷摸摸上班看手机啦。。[1]: /felixglow/Stock[2]: /waditu/tushare[3]: /nooperpudd/chinastock[4]: /benitoro/stockholm[5]: /shidenggui/easyquotation[6]: /wlei-fx/stocks[7]: /1514louluo/mystock[8]: /zhoudayang/get_recommend_stock欢迎加入本站公开兴趣群高性能计算群兴趣范围包括:并行计算,GPU计算,CUDA,MPI,OpenMP等各种流行计算框架,超级计算机,超级计算在气象,军事,航空,汽车设计,科学探索,生物,医药等各个领域里的应用QQ群:
刚表态过的朋友 ()
上一篇:下一篇:用户名:清茶问道
文章数:14
评论数:13
访问量:25423
注册日期:
阅读量:1297
阅读量:3317
阅读量:452762
阅读量:1137216
51CTO推荐博文
selenium&是一个web的自动化测试工具,支持多平台:windows、linux、MAC&,支持多浏览器:ie、ff、safari、opera、chrome,支持多语言:例如C、JAVA、Python等,支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器的执行,相当于分发机的功能。&虽然Selenium本来是应用于自动化测试领域,但是因为Selenium可以实现Web交互操作,所以可以利用Selenium模拟Web抓取一些常规方式不能抓取的数据,例如一些页面生成后才会动态加载的数据,或者需要登录后才能访问的数据。&下面以获取某股票网站的板块行情数据为例子,介绍Python结合Selenium模拟网页抓取数据的方法:&1、首先配置Python + Selenium环境(1)访问去下载合适的python版本,推荐3.4或2.7版本。 &&(2)安装下载包,一路next。&(3)把python的安装目录添加到path系统变量中即可。 &(4)测试python安装是否成功,cmd打开命令行输入 python命令,如下图即成功了 &&(5)安装PIP、SetupTools&& 安装地址:&、&&(6)安装Selenium& 执行命令&pip&install&-U&selenium&2、分析其页面结构&&& &&&& 页面包括了股票列表和页面列表&股票列表通过id为list-body的ul展示:&页面列表是一个id为page-navi的div,但是这个div是根据股票数据动态生成的。&&&3、程序逻辑& 通过页面分析,初步的程序逻辑:&&&&&&& a. 首先通过Selenium的chrome或者firefox驱动加载页面&&&&&&& b. 通过页面元素抓取数据&&&&&&& c. 通过Click()方法实现页面跳转&&&&&&& d. 重复a-c直到页面全部跳转完成& &4、代码实现:(1)获取板块数据'''获取行业板块数据'''
def&getIndustrySection():
&&&&__logger.debug("开始:收集行业板块数据")&
&&&&&&&&dbOperator&=&DBOperator()
&&&&&&&&dbOperator.connDB()
&&&&&&&&table&=&__stockTables['section']
&&&&&&&&date&=&getNowdate()
&&&&&&&&for&code&in&range(1,&100):
&&&&&&&&&&&&code&=&'012%03d'&%&code
&&&&&&&&&&&&if&isStockSectionExitsInDate(table,code,&date,&dbOperator):
&&&&&&&&&&&&&&&dataUrl&=&"http://…………fi_quote_navi_bar&id=bd_ind#mod=list&id=bd%s"%&code
&&&&&&&&&&&&&&&getStockSectionDetail(code,dataUrl,dbOperator)&&
&&&&except&Exception&as&err:
&&&&&&&&&&&__logger.error("&&&&&&&Exception:&"+str(code)&+&"&"&+&str(err))
&&&&finally:
&&&&&&&&dbOperator.closeDB()
&&&&__logger.debug("结束:收集行业板块数据")&(2)抓取代码&'''读取信息'''
def&getDataFromUrl(dataUrl):
&&&&&&&&browser&=&webdriver.Firefox()
&&&&&&&&browser.get(dataUrl)
&&&&&&&&time.sleep(2)
&&&&&&&&codes&=&[]
&&&&&&&&pages&=&[1,]
&&&&&&&&pageTotalNum&=&1
&&&&&&&&listFoot&=browser.find_element_by_class_name("list-foot")
&&&&&&&&pageTags&=listFoot.find_elements_by_tag_name("a")
&&&&&&&&pageTotalNum&=&len(pageTags)&-&2
&&&&&&&&for&i&in&range(1,&pageTotalNum&):
&&&&&&&&&&&&element&=browser.find_element_by_xpath("//ul[contains(@id,'list-body')]")
&&&&&&&&&&&&codeElements&=element.find_elements_by_tag_name("li")
&&&&&&&&&&&&for&codeElement&in&codeElements:
&&&&&&&&&&&&&&&codes.append(codeElement.get_attribute("id")[-6:])
&&&&&&&&&&&
&&&&&&&&&&&&listFoot&=browser.find_element_by_class_name("list-foot")
&&&&&&&&&&&&pageTags&=listFoot.find_elements_by_tag_name("a")
&&&&&&&&&&&&nextPage&=&i&+&1
&&&&&&&&&&&&if&i&&&pageTotalNum&and&not&nextPage&in&pages:
&&&&&&&&&&&&&&&&pageTags[nextPage].click()
&&&&&&&&&&&&&&&&pages.append(nextPage)
&&&&&&&&&&&&&&&&time.sleep(2)&&&
&&&&&&&&print&codes
&&&&except&NoSuchElementException&as&err:
&&&&&&&__logger.error("&&&&&&&Exception:&&"&+&str(err))
&&&&&&&&return&None
&&&&except&TimeoutException&as&err:
&&&&&&&__logger.error("&&&&&&&Exception:&&"&+&str(err))
&&&&&&&&return&None
&&&&except&Exception&as&err:
&&&&&&&__logger.error("&&&&&&&Exception:&&"&+&str(err))
&&&&&&&&return&None
&&&&finally:
&&&&&&&&browser.close()
&&&&return&codes&&& (3)调用抓取数据并存储数据库'''获取板块交易信息明细'''
def&getStockSectionDetail(sectionCode,&dataUrl,&dbOperator):
&&&&stockCodes&=&getDataFromUrl(dataUrl)
&&&&if&stockCodes&==&None&and&len(stockCodes)==&0:
&&&&&&&&return&False
&&&&&&&&&&
&&&&stockQuotation&=&{}
&&&&date&=&getNowDate()
&&&&for&stockCode&in&stockCodes:
&&&&&&&&#存储到数据库
&&&&&&&&……&(4)多线程实现&&& 为提高运行效率,采用多线程方式同时采集不同板块数据:&threads&=&[]
t1&=threading.Thread(target&=&getIndustrySection)&&&&#行业板块
t2&=threading.Thread(target&=&getConceptSection)&&&&&#概念板块
t3&=threading.Thread(target&=&getAreaSection)&&&&&&&&#地域板块
threads.append(t1)
threads.append(t2)
threads.append(t3)
if&__name__&=='__main__':
&&&&time1=&time.time()
&&&&&&&&for&t&in&threads:
&&&&&&&&&&&t.setDaemon(True)
&&&&&&&&&&&t.start()
&&&&&&&&while&len(threads)&&&0&:
&&&&&&&&&&&&t&=&threads[0]
&&&&&&&&&&&&t.join()
&&&&&&&&&&&&del&threads[0]
&&&&except&Exception&as&err:
&&&&&&&__logger.error("&&&&&&&Exception:&"&+str(err))
&&&&time2=&time.time()
&&&&print&"总用时:%d"&%&(time2-time1)&
&&&&__("总用时:%d"&%&(time2-time1))&5、数据分析抓到的数据就可以用作分析了,例如1月7日板块现金流的情况(当然还要结合其他数据):main为主力流入数据,private为主力流出数据,1月7日当天只开盘半个小时即熔断,只有煤化工领域录得小幅资金流入:&&&6、优点和缺点(1)优点:大多数Web数据都可以采用这种方式获得;(2)缺点:运行效率较低,加载页面速度慢,如果数据量较大,需要长时间运行,如果是服务端linux,因为没有显示桌面,无法加载firefox或chrome驱动。
了这篇文章
类别:┆阅读(0)┆评论(0)我新发布了一个采集规则:
新浪财经股票数据采集
采集新浪财经股票各项数据。
希望大家喜欢!下载地址:
从淘宝的买家评论中,能挖掘出什么有用的信连续动作:如何把抓到的信息与动作步骤对应淘宝开店运营十大攻略深圳市咨询投诉分析去资源库下载规则,轻松抓数据
12345678910
Fuller帖子:4358 ym帖子:1451 xandy帖子:1084

我要回帖

更多关于 python3爬虫抓取图片 的文章

 

随机推荐