Selenimu做爬虫 - oscarxie - 博客园

Selenimu做爬虫

前面有介绍过Selenium作为开源的自动化测试框架,其实Selenium还可以作为爬虫工具。

举个例子,我想爬取中国概念股的一些信息,例如这样的:http://app.finance.ifeng.com/list/usstock_cn.php

先建个SeleniumUtil.py的文件

代码

#!/usr/bin/python2.5.2
#-*- coding: utf8 -*-

from selenium import selenium

class SeleniumUtil:
  seleniums = {}
  
  def StartSeleniumForUrl(self, url):
    sel = selenium("localhost", 4444,"*chrome", url)
    sel.start()
    sel.set_timeout("90000")
    return sel

def GetSelenium(self, websiteName, url):
    #if websiteName in self.seleniums:
     # return self.seleniums[websiteName]
    self.seleniums[websiteName] = self.StartSeleniumForUrl(url)
    return self.seleniums[websiteName]
  
  def StopSelenium(self, websiteName):
    if websiteName in self.seleniums:
      self.seleniums[websiteName].stop()

复制代码

接着写个IfengFinanceSite.py文件来爬取需要的信息,例子如下,

代码

#!/usr/bin/python2.4
# -*- coding: utf8 -*-

#Ifeng Site
#

import codecs,time
from SeleniumUtil import SeleniumUtil

ExchangeUrlMap = {
  "CCS": "http://app.finance.ifeng.com/list/usstock_cn.php",
  #"SHA_B": "http://stock.finance.sina.com.cn/stock/quote/shb%s.html",
}
ExchangeXPath = "//html/body/div[4]/div/div[2]/div/table/tbody/tr[%s]/td[1]"

class IfengFinanceSite:

# result file for diff exchanges
  def GetAllTickers(self, exchange, resultFiles):
    sln = SeleniumUtil().GetSelenium("Ifeng", "http://app.finance.ifeng.com/")
    myfile=codecs.open(resultFiles % exchange, 'w', 'utf-8')

count = 0

sln.open(ExchangeUrlMap[exchange])
    time.sleep(5)
      
    for j in range(2, 200):
        if sln.is_element_present(ExchangeXPath % j):
          context = sln.get_text(ExchangeXPath % j).strip()
          print >> myfile, context, '\r'
          count = count + 1
        else: break
    print "%s companies for exchange %s recorded." % (count, exchange)
    sln.stop()

exchangelist=["CCS"] #"SHA_A","SHA_B","SHE_A","SHE_B","SHA_Q","SHA_CEF","SHE_CEF","SHA_Bond","SHE_Bond"
for exchange in exchangelist:    
    print exchange
    resultFiles="Ifeng_company_list_%s.txt"    
    IfengFinanceSite().GetAllTickers(exchange, resultFiles)

复制代码

之后启动Selenium服务,调动浏览器就能获取所有中国概念股股票代码,如果还需要其他的信息如名称、价格,只需要取得Xpath就行了。

再扩展开就是可以用Selenium做diff工具了,前后版本的对比,自有产品与竞争对手信息的对比。

当然,Selenium RC因为要调出浏览器,所以效率还是很一般,可以考虑用Selenium其他产品。

Selenimu做爬虫 - oscarxie - 博客园相关推荐

  1. java 模拟登陆exe_Java简单模拟登陆和爬虫实例---博客园老牛大讲堂

    鉴于有人说讲的不清楚,我这里再详细补充一下:更新日期:2017-11-23 本片文章适合初学者,只简单说了一下爬虫怎么用,和一个简单的小实例.不适合你的就可以不看了.----博客园老牛大讲堂 1.什么 ...

  2. [2017-08-31]如何使用ruby同步markdown博文到博客园

    这两天折腾了一下用ruby通过MetaWeblog接口把本博客同步到博客园,特此记录. MetaWeblog MetaWeblog是一个专门关于博客的协议标准,通过xmlrpc,很简单的定义了新增.编 ...

  3. 【完全开源】博客园客户端UWP版(上篇)

    目录 说明 PC截图 手机截图 关于源码 说明 这段时间一直在研究UWP开发,前段时间MS-UAP发布了淘宝UWP版,支持win10手机,看起来很叼.之后为了练手做了这个博客园客户端.目前只完成了一部 ...

  4. YY博客园UML用例图-活动图-状态图之博客模块

    UML建模YY系列: YY博客园UML类图之博客模块 YY博客园UML时序图之博客模块 YY博客园UML用例图-活动图-状态图之博客模块 前面YY了博客园UML类图之博客模块和博客园UML时序图之博客 ...

  5. Python爬虫入门教程 54-100 博客园等博客网站自动评论器

    爬虫背景 爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成"博客园" 博客的自动评论,其实原理是非常简单 ...

  6. java 使用webmagic 爬虫框架爬取博客园数据

    java 使用webmagic 爬虫框架爬取博客园数据存入数据库 学习记录   webmagic简介: WebMagic是一个简单灵活的Java爬虫框架.你可以快速开发出一个高效.易维护的爬虫. ht ...

  7. 【Python爬虫】爬了七天七夜,终于爬出了博客园粉丝数排行榜!

    文章发出不到30分钟就被首页下架了,默哀-- 起因 为了督促自己更加积极地写博客,我希望有一个排名系统能让我看到自己的进步.但是博客园对用户的排名体系相对是比较少的,主要是推荐博客排行和积分排行:但它 ...

  8. 『Python开发实战菜鸟教程』实战篇:爬虫快速入门——统计分析CSDN与博客园博客阅读数据

    文章目录 0x01:引子 首先介绍一下网络爬虫是什么,可以用来做什么? 这里简单探讨一下网络爬虫的合法性 正式进入爬虫实战前,需要我们了解下网页结构 HTML CSS JScript 写一个简单的 H ...

  9. nodejs爬虫与python爬虫_【nodeJS爬虫】前端爬虫系列 -- 小爬「博客园」

    写这篇 blog 其实一开始我是拒绝的,因为爬虫爬的就是cnblog博客园.搞不好编辑看到了就把我的账号给封了:). 言归正传,前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 ph ...

最新文章

  1. C++多态的基本概念
  2. Dynamic Data Web Application编译是报GetActionPath调用模糊解决办法
  3. 用柠檬来发电真的可行吗?
  4. USACO-Section1.6 Prime Palindromes(素数和回文数)
  5. 响应式系统的依赖收集追踪原理
  6. Springboot java -jar 提示没没有主清单属性
  7. linux挂载VMFS硬盘,linux – ESX Guest中的硬件磁盘错误,在vmfs支持的驱动器上……这怎么可能?...
  8. 信息安全实验二、漏洞扫描与病毒防治
  9. 笔记本电脑插耳机后耳机无声音有外放情况,咋办??
  10. QQ号大规模被盗与你我有什么关系?你我该如何做?
  11. python用谷歌内核制作浏览器_用cef Python打造自己的浏览器
  12. qq离线linux,QQ For Linux 我哭了,官方版
  13. 《天天数学》连载62:三月二日
  14. Android音视频开发详解
  15. thinkpad linux win7,Thinkpad t440 Win7+ubuntu双系统
  16. C语言解一元高次方程代码,拜求大佬,这代码里面是什么意思,这是一个求一元高次方程的代码...
  17. php生成小学数学练习题
  18. 字段属性——唯一约束
  19. 2014蓝桥杯本科B组C/C++第四题【史丰收速算】
  20. Ubuntu16.04+CUDA8.0+cudnn v5.1+opencv3.1(2.4.10)+caffe+GTX 1080Ti 机器配置记录

热门文章

  1. mysql三高讲解(二):2.8 mysql视图相关概念
  2. eks volumn s3_和平精英:SMG战队无缘总决赛,S3前提退场原因一览
  3. 获取roi内的xld_提升ROI是王道,这几种推广获客渠道与形式你还不知道?
  4. linux内核工程导论,Linux内核工程导论——内存管理(3)
  5. 2019死磕java面试题_死磕 java同步系列之开篇
  6. java创建图片文件怎么打开_java 程序怎么打开一张图片?
  7. java 类型 装箱和拆箱
  8. vue 指令 v-for 遍历数组
  9. python 字符串方法
  10. opencv-api minEnclosingCircle