新发经济

经济

爬取股票信息

时间:2021-11-01 22:27

  如何通过软件抓取新浪财经里单只股票数据

   如果你是准备抓历史数据,那还不如直接使用免费的wdz程序,沪深1990年至今的全部日线分钟数据都可以直接输出,而且可转化为各种格式。根本不用去新浪中抓取。 java 如何实现 获取实时股票数据

   用网抓的方式,开源的有框架。 如何用python 爬虫抓取金融数据

  获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一。鉴于此,我拾起了Python这把利器,开启了网络爬虫之路。

  本篇使用的版本为python3.5,意在抓取证券之星上当天所有A股数据。程序主要分为三个部分:网页源码的获取、所需内容的提取、所得结果的整理。

  一、网页源码的获取

  很多人喜欢用python爬虫的原因之一就是它容易上手。只需以下几行代码既可抓取大部分网页的源码。

  import urllib.request
 

  虽说抓一页的源码容易,不过在一个网站内大量抓取网页源码却经常遭到服务器拦截,顿时感觉世界充满了恶意。于是我开始研习突破反爬虫限制的功法。

  1.伪装流浪器报头

  很多服务器通过浏览器发给它的报头来确认是否是人类用户,所以我们可以通过模仿浏览器的行为构造请求报头给服务器发送请求。服务器会识别其中的一些参数来识别你是否是人类用户,很多网站都会识别User-Agent这个参数,所以请求头最好带上。有一些警觉性比较高的网站可能还会通过其他参数识别,比如通过Accept-Language来辨别你是否是人类用户,一些有防盗链功能的网站还得带上referer这个参数等等。

  2.随机生成UA

  证券之星只需带User-Agent这个参数就可以抓取页面信息了,不过连续抓取几页就被服务器阻止了。于是我决定每次抓取数据时模拟不同的浏览器发送请求,而服务器通过User-Agent来识别不同浏览器,所以每次爬取页面可以通过随机生成不同的UA构造报头去请求服务器,

  3.减慢爬取速度

  虽然模拟了不同浏览器爬取数据,但发现有的时间段可以爬取上百页的数据,有时候却只能爬取十来页,看来服务器还会根据你的访问的频率来识别你是人类用户还是网络爬虫。所以我每抓取一页都让它随机休息几秒,加入此句代码后,每个时间段都能爬取大量股票数据了。

  4.使用代理IP

  天有不测风云,程序在公司时顺利测试成功,回寝室后发现又只能抓取几页就被服务器阻止了。惊慌失措的我赶紧询问度娘,获知服务器可以识别你的IP,并记录此IP访问的次数,可以使用高匿的代理IP,并在抓取的过程中不断的更换,让服务器无法找出谁是真凶。此功还未修成,欲知后事如何,请听下回分解。

  5.其他突破反爬虫限制的方法

  很多服务器在接受浏览器请求时会发送一个cookie文件给浏览器,然后通过cookie来跟踪你的访问过程,为了不让服务器识别出你是爬虫,建议最好带上cookie一起去爬取数据;如果遇上要模拟登陆的网站,为了不让自己的账号被拉黑,可以申请大量的账号,然后再爬入,此处涉及模拟登陆、验证码识别等知识,暂时不再深究...总之,对于网站主人来说,有些爬虫确实是令人讨厌的,所以会想出很多方法限制爬虫的进入,所以我们在强行进入之后也得注意些礼仪,别把人家的网站给拖垮了。

  二、所需内容的提取

  获取网页源码后,我们就可以从中提取我们所需要的数据了。从源码中获取所需信息的方法有很多,使用正则表达式就是比较经典的方法之一。我们先来看所采集网页源码的部分内容。

  为了减少干扰,我先用正则表达式从整个页面源码中匹配出以上的主体部分,然后从主体部分中匹配出每只股票的信息。代码如下。

  
body=re.findall(pattern,str(content))  #匹配<tbody和</tbody>之间的所有代码pattern=re.compile(>(.*?)<)
stock_page=re.findall(pattern,body[0])  #匹配>和<之间的所有信息
 

  其中compile方法为编译匹配模式,findall方法用此匹配模式去匹配出所需信息,并以列表的方式返回。正则表达式的语法还挺多的,下面我只罗列所用到符号的含义。

  语法    说明  

  .    匹配任意除换行符“\n”外的字符  

  *    匹配前一个字符0次或无限次  

      匹配前一个字符0次或一次  

  \s    空白字符:[<空格>\t\r\n\f\v]  

  \S    非空白字符:[^\s]  

  [...]    字符集,对应的位置可以是字符集中任意字符  

  (...)    被括起来的表达式将作为分组,里面一般为我们所需提取的内容  

  正则表达式的语法挺多的,也许有大牛只要一句正则表达式就可提取我想提取的内容。在提取股票主体部分代码时发现有人用xpath表达式提取显得更简洁一些,看来页面解析也有很长的一段路要走。

  三、所得结果的整理

  通过非贪婪模式(.*?)匹配>和<之间的所有数据,会匹配出一些空白字符出来,所以我们采用如下代码把空白字符移除。

  stock_last=stock_total[:] #stock_total:匹配出的股票数据for data in stock_total:  #stock_last:整理后的股票数据
if data==:
stock_last.remove()
 

  最后,我们可以打印几列数据看下效果,代码如下

  print(代码,\t,简称,   ,\t,最新价,\t,涨跌幅,\t,涨跌额,\t,5分钟涨幅)for i in range(0,len(stock_last),13):        #网页总共有13列数据
print(stock_last[i],\t,stock_last[i+1], ,\t,stock_last[i+2],  ,\t,stock_last[i+3],  ,\t,stock_last[i+4],  ,\t,stock_last[i+5])
 

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

   我用前嗅的forespider数据采集软件爬过股市信息的,比较简单,分析了一下历史股价,目前数据还不多没做太多分析。过几天再说 什么是股市龙虎榜,如何看股市龙虎榜

   什么叫龙虎榜

  股市龙虎榜就是指股票的涨跌幅大,振幅大,换手率高或者连续三日涨跌幅超过20%等排名靠前的统计在一起公布;这就是叫股市龙虎榜;

  股市龙虎榜得到沪深两市登榜的个股名单、哪些机构或者券商营业部(游资)买卖情况、资金买卖进出的成交量、哪些游资席位、出名的席位等等信息;往往哪些做超短高抛低吸,追板投资者,打板投资者都是每天会非常重视龙虎榜情况,这是激进投资者重点分析的内容!

  
 

  什么样的股票才有机会登入龙虎榜

  (1)涨跌幅超过7%的前几名,基本都是涨停板或者跌停板居多;

  (2)日内股票振幅超过15%的股票前几名有可能登上龙虎榜;

  (3)股票换手率超过20%的有可能登上龙虎榜;

  (4)综合三日内涨幅超过20%的股票有可能登上龙虎榜;

  怎么用龙虎榜

  龙虎榜是在很多财经网站都是会统计,综合沪深两市的涨跌幅大,振幅大,换手高等排名靠前的股票登上龙虎榜;下面以东方财富网的龙虎榜解答怎么用龙虎;

  (1)当天上榜的个股名单明细:

  
 

  龙虎榜个股名单就不用解释了吧,只要出现在这里龙虎榜中的个股就证明当天的股票涨跌幅大,振幅大,换手高其中一种排名靠前的股票,才会被登入龙虎榜中;

  (2)个股龙虎榜统计

  
 

  这个栏目就是个股近期上榜的次数票排名前五的个股名单,往往妖股都是从这里诞生,妖股是基本每天都会登上个股龙虎榜名单中;后面就是有资金进出明显列表;

  (3)机构买卖情况

  
 

  这个栏目就是根据当天机构资金净流入,也就是机构资金吸筹前五名的个股名单,后面还有出现为什么登入龙虎榜的原因;

  (4)机构席位买卖追踪

  
 

  这个栏目是根据月内机构资金成交金额大小排名前五的个股名单,在成交额当中后方还可以得到机构净流入和净卖出的金额明显;

  (5)每日活跃营业部

  
 

  这个栏目就是股市当天哪些营业部净买入排名前五名的个股名单,营业部其实都是指股市中的游资资金,只要登入龙虎榜的营业部证明有哪些游资存在炒作这只股票;

  (6)营业部回报排行

  
 

  这个栏目就是根据哪些营业部出现龙虎榜次数前五名的营业部名单,往往经常登入龙虎榜的营业部证明这股游资资金在股市蠢蠢欲动,频繁在股市操作买卖;

  (7)证券营业部上榜统计

  
 

  这个栏目就是根据证券营业部在股市中成交金额排名前五名,也可以代表说只要出现这前五名的营业部证明近一个月内这股游资实力比较雄厚,动用的资金比较庞大;

  (8)证券营业部查询

  
 

  这个栏目就是全国各地证券营业部的综合,方面投资者们了解全国个股具体有什么证券公司,那个省份有什么证券营业部,提供投资者们方便查询!

  在东方财富网里面有详细的龙虎榜详细资料

  打开东方财富,点开“数据”,进去后往下拉一点可以看到“龙虎榜”,进去后就

  可以看当天的龙虎榜和以前的龙虎榜的各种详细数据