前面曾写过一篇Selenimu做爬虫的文章,大概只说了些如何爬取信息,这篇文章主要接着来说下比较具体的用途。

假设你是某个财经网站的质量人员,上头很想知道自己网站的数据是否正确,(这里插一句,做财经的应该知道,例如国内股票的原始数据都是从上证或深证来的,之后有很多的数据提供商从2大交易所购买数据,这个不是一般公司可以做到的,看看level-2和超赢等卖得那么红火就知道了,国外的blomberg也类似。),那么就需要提供一个dashboard来展示自己的数据和其他同行(多数是竞争对手啦)的数据,这样直观且方便跟踪,同时对其他人也有说服力。

我了解下来,很多都是通过人工采样的方式来对比,比如建个excel表把自己和其他网站数据填充,这个做法费时又费力,其实selenium可以帮助我们提高效率。

大致的思路如下:

1. 获取交易所信息及股票代码

在Selenimu做爬虫已经介绍过,找某个网站股票综合页面,例如新浪就能获取到某交易所的股票代码,并抓取下来,当然,如果自己后台数据库有这个数据,那就更好了。

2. 创建一个CrawlSettings.py文件,用来存取比较网站的信息,如网站名称、URL、财经指标的xpath,示例如下,

代码

 1  # !/usr/bin/python2.5.2
 2  # -*- coding: utf8 -*-
 3 
 4  import  codecs
 5 
 6  PageProfiles  =  (
 7    {
 8       " Name "  :  " sina " ,
 9       " Link "  : {
10         " sz "  :  " http://finance.sina.com.cn/realstock/company/sz%s/nc.shtml " ,
11         " sh "  :  " http://finance.sina.com.cn/realstock/company/sh%s/nc.shtml " ,
12      },
13       " Pattern "  : {
14         " PriceClose "  :  " //span[@id='itemPrevious2'] " ,
15         " QuoteLast "  :  " //h3[@id='itemCurrent'] " ,
16         " BookValuePerShareYear " : " //td[@id='cwjk_mgjzc'] " ,
17         " EPS "  :  " //td[@id='cwjk_mgsy'] " ,
18         " MarketCap "  : " //span[@id='totalMart2'] " ,
19         " PE "  : " //td[@id='pe_ratio_lyr'] " ,
20         " Float " : " //div[@id='con04-0']/table/tbody/tr[4]/td[2] " ,
21         " CashPerShareYear "  :  " //div[@id='con04-0']/table/tbody/tr[2]/td[1] " ,
22         " Volume " : " //span[@id='itemVolume2'] " ,
23      },
24       " PostProcess "  : {
25         " all "  : {
26           " RemoveString "  : [r " , " , r " % " , r " 元 " ]
27        },
28      },
29     ...
30  )
31 
32  SiteProfiles  =  {
33     " sina "  : {
34       " BaseLink "  :  " http://finance.sina.com.cn " ,
35       " PageProfileNames "  : [ " sina " , " sina_DPSRecentYear " , " sina_other " ]
36    },
37    ...
38  }
39 
40  CrawlProfiles  =  {
41     " test "  : {
42         " Sites "  : [ " baidu " , " sina " , " yahoo " ],
43         " Criteria "  : [ " Float " ,  " PE " ,  " MarketCap " ,  " EPS " ,  " PriceClose " ,  " QuoteLast " ,  " BookValuePerShareYear " , 
44                       " CurrentRatioYear " ,  " NetProfitMarginPercent " ,  " GrossMargin " ,  " CashPerShareYear " , 
45                       " DPSRecentYear " ,  " High52Week " ,  " Low52Week " , " Volume " ],  
46         " TickerListFile "  :  " tickerList.txt " ,
47         " ResultFiles "  :  " result_%s.txt " ,
48         " NumTickerPerSite "  :  " 20 "
49      },
50    ...
51  }
52 
53  ExchangesProfiles = {
54       " HongKong " : " HKG " ,
55       " UK " : " LON " ,
56       " Canada " :[ " CVE " , " TSE " ],
57       " France " : " EPA " ,
58       " Italy " :[ " ISE " , " BIT " ],
59       " TaiWan " : " TPE " ,
60       #  "China Mainland":["SHA","SHE"],
61          ...
62  }
63 
64  class  CrawlSettings:
65    
66     def  GetCrawlProfile(self, name):
67       if  name  in  CrawlProfiles:
68         return  CrawlProfiles[name]
69       return  None
70    
71     def  GetSiteProfile(self, name):
72       if  name  in  SiteProfiles:
73         return  SiteProfiles[name]
74       return  None
75    
76     def  GetPageProfile(self, name):
77       for  prof  in  PageProfiles:
78         if  prof[ " Name " ]  ==  name:
79           return  prof
80       return  None
81    
82     def  LoadTickerList(self, filename):
83      f  =  codecs.open(filename,  ' r ' ,  ' utf-8 ' )
84      list  =  []
85       for  line  in  f:
86        list.append(line.strip())
87 
88      f.close()
89       return  list
90 
91     def  GetStockType(self, ticker):
92         if  str(ticker)[0] == ' 0 '   or   str(ticker)[0] == ' 2 ' :
93             return   " sz "
94         elif  str(ticker)[0] == ' 6 '   or  str(ticker)[0] == ' 9 ' :
95             return   " sh "
96         else :
97             return   " all "

3. 爬取页面数据,FinanceAutomationCrawler.py;参考Selenimu做爬虫

4. 比较和保存数据,FinanceAutomationResult.py

代码

 1  # !/usr/bin/python2.5.2
 2  # -*- coding: utf8 -*-
 3 
 4  import  sys
 5  import  codecs
 6 
 7 
 8  class  FinanceAutomationResult:
 9     # ##  Save / Load / Generate the result comparison ###
10 
11     def  SaveAsSiteResults(self, results, siteList, criteriaList, tickerList, fileName):
12       # ## results[site][criteria][ticker] 
13       # ##  Save as "result_site.txt": 
14       # ## ticker   criteria1 criteria2 .. 
15       # ## ticker1    1        2
16       # ## ticker2    1        2
17       # ##
18       for  site  in  siteList:
19      ...
20 
21     def  SaveAsCriteriaResults(self, results, siteList, criteriaList, tickerList, fileName):
22       # ## results[site][criteria][ticker] 
23       # ## Save as "result_criteria.txt": 
24       # ## ticker   site1     site2  .. 
25       # ## ticker1    1        2
26       # ## ticker2    1        2
27       # ##
28       for  criteria  in  criteriaList:
29      ...
30 
31     def  CompareResult(self, results, siteList,criteriaList, tickerList):
32      
33       for  criteria  in  criteriaList:
34      ...

好了,废话不多说,大概的思路如下图:

最后祝大家清明节快乐!

Selenimu做爬虫续相关推荐

  1. Selenimu做爬虫 - oscarxie - 博客园

    Selenimu做爬虫 - oscarxie - 博客园 Selenimu做爬虫 前面有介绍过Selenium作为开源的自动化测试框架,其实Selenium还可以作为爬虫工具. 举个例子,我想爬取中国 ...

  2. php和python写爬虫-为什么选择用python做爬虫

    什么是网络爬虫? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当 ...

  3. python的爬虫库_python做爬虫常用库

    python做爬虫常用库 一.总结 一句话总结: urllib:一系列用于操作URL的功能. requests:基于 urllib 编写的,阻塞式 HTTP 请求库,发出一个请求,一直等待服务器响应后 ...

  4. 爬虫python下载视频_用python做爬虫下载视频

    用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作.下面和大家分享一下我用python爬取某网站视频的案例.用pytho ...

  5. 爬虫python能做什么-Python除了能做爬虫之外还能做什么?

    原标题:Python除了能做爬虫之外还能做什么? 1.web开发python拥有非常完善的与web服务器进行交互的库,以及大量的免费的前端网页模板.更具优势的是,有非常优秀且成熟的Django Web ...

  6. python做爬虫 怎么样效率最高_公认8个效率最高的爬虫框架

    一些较为高效的Python爬虫框架.分享给大家. 1.Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中 ...

  7. 为什么网上Python爬虫教程这么多,但是做爬虫的这么少呢?爬虫发展又该是如何呢?

    1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上. 大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析 什么时候要用到爬虫 ...

  8. 不仅仅可以用来做爬虫,Puppeteer 还可以干这个!

    Python 自动化测试工具大家可能知道 Pyppeteer,其实它就是 Puppeteer 的 Python 版本的实现,二者功能类似.但其实 Puppeteer 和 Pyppeteer 不仅仅可以 ...

  9. 深圳java培训:Java也能做爬虫。

    深圳java培训:Java也能做爬虫. 现在提到爬虫人第一个想到的就是python,其实使用Java编写爬虫也是很好的选择, 下面给大家展示一个使用Java基础语言编写的爬取小说的案例: 实现功能: ...

最新文章

  1. Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service)
  2. 修改了系统时间后,myeclipse 和tomcat下的代码不同步了
  3. 【转】C++中#include包含头文件带 .h 和不带 .h 的区别
  4. expdp导出表结构_(转)oracle使用expdp、impdp和exp、imp导入导出表及表结构
  5. 回炉Spring--事务及Spring源码
  6. 像素级复制!荣威R品牌“撞车”小鹏P7剪刀门,还是手动的?
  7. vue-cli的webpack模板项目配置文件说明
  8. Linux 网桥 brctl
  9. 王超(清华大学博士)Linux期末考核
  10. NS3使用Eclipse配置
  11. 第九章 虚拟内存 第八节 内存映射
  12. 《三天三夜》创作者去世,曾一边写歌一边编程
  13. Arduino与Proteus仿真实例-HC-SRF04超声波测距仿真
  14. 计算机右键菜单更换顺序,电脑图标排列顺序怎么自己改变了
  15. 掌握python和js_新华字典:掌_“掌”的意思,五笔,笔画,拼音,五行_HttpCN
  16. 献给小白的笔记day6
  17. Python—reverse()和reversed()方法介绍
  18. 数据库----------约束、主键约束
  19. canvas制作简单钟表
  20. 微信小程序API----授权登录拿到用户头像昵称等信息

热门文章

  1. URAL 1181 Cutting a Painted Polygon【递归+分治】
  2. 实战PyQt5:090-处理一个QPaintDevice错误
  3. jar包制作Docker镜像
  4. 湖北省大学程序设计竞赛(网络同步赛) D. Who killed Cock Robin
  5. 最简单的视音频播放示例3 Direct3D播放YUV,RGB(通过Surface)
  6. flink cdc MySQL2Doris 案例分享 解决分库多表同步
  7. ZABBIX 监控原理及架构
  8. 【b802】火柴棒等式
  9. python中函数返回值是函数的函数的用法 func()()
  10. win7+ubuntu 16.04双系统安装方法