今天,大数据部老大交给我一项任务——抓取股票历史数据。于是乎,我自行在网上找了一下,发现wget真真是一个非常强大的linux下载工具。我已经被深深震撼到了。下面叙述今天的一些过程,还是比较坎坷的。

  首先,我利用公司现在存在的股票数据,使用hive查询所有的股票代码并导入本地:

hive -e "use stock;select distinct secucode from t_stock_tick_shsz where type='sz';" >> sz_secucode.txt

hive -e "use stock;select distinct secucode from t_stock_tick_shsz where type='sh';" >> sh_secucode.txt

  PS:上面这一步骤,因为一个小小的问题——开始没有加关键字distinct,结果导致后期抓取数据抓到一大堆重复的股票代码的数据。

  刚开始想偷懒,想要一句一句地粘贴wget,但是,股票代码太多了,所以还是写脚本吧,shell脚本如下:

#下载上海交易所股票历史记录
#!/bin/bash
  for I in `cat sh_secucode.txt`
do
wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" \
-nv --tries= --timeout= -O /home/bigdata/script/zj/sh_history/history_data/$I.csv http://quotes.money.163.com/service/chddata.html?code=0$I&end=20130430
sleep 1s
done #下载深圳交易所股票历史记录
#!/bin/bash
for I in `cat sz_secucode.txt`
do
wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" \
-nv --tries= --timeout= -O /home/bigdata/script/zj/sz_history/history_data/$I.csv http://quotes.money.163.com/service/chddata.html?code=1$I&end=20130430
sleep 1s
done

  PS:说一下上面这段代码,为什么在wget有user-agent这个参数?玩过爬虫的同学肯定都知道,当你频繁下载一个网站的东东,这个网站会识别出这是一个爬虫程序,于是就拒绝你下载他家的资源了,所以要设置一个代理,伪装成一个浏览器下载文件,这样被发现的概率就笑了。还有,为什么要加一个sleep?这是因为有可能有的文件比较大,可能在几毫秒之内没有下载完就被挂停了。当然了,我这边的每个文件也就几百K,所以1s也足够了。

  最后,运行脚本,写这篇文章的时候,脚本还在运行中,希望顺利!O(∩_∩)O

写一个shell脚本利用wget抓取股票历史数据的更多相关文章

  1. 利用wget 抓取 网站网页 包括css背景图片

    利用wget 抓取 网站网页 包括css背景图片 wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有.不过用它来dump比较现代的网站会有一个问题:不支持c ...

  2. 在linux写一个shell脚本用maven git自动更新代码并且打包部署

    服务器上必须安装了git maven jdk 并且配置好环境变量 实际服务器中可能运行着多个Java进程,所以重新部署的时候需要先停止原来的java进程,写一个按照名称杀死进程的脚本 kill.sh ...

  3. ubuntu中写一个shell脚本的过程

    gedit hello.sh ,然后输入 #!/bin/bash echo "Hello world!" chmod +x hello.sh ./hello.sh

  4. 向大家分享一个shell脚本的坑

    打算在跳板机上写一个shell脚本,批量检查远程服务器上的main进程是否在健康运行中. 先找出其中一台远程机器,查看main进程运行情况 [root@two002 tmp]# ps -ef|grep ...

  5. 利用wireshark抓取远程linux上的数据包

    原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...

  6. 如何手动写一个Python脚本自动爬取Bilibili小视频

    如何手动写一个Python脚本自动爬取Bilibili小视频 国庆结束之余,某个不务正业的码农不好好干活,在B站瞎逛着,毕竟国庆嘛,还让不让人休息了诶-- 我身边的很多小伙伴们在朋友圈里面晒着出去游玩 ...

  7. 写一个shell,自动执行jmeter测试脚本

    贡献一个自己写的shell脚本,很简单,但又可以高效率的自动执行jmeter压测脚本. #!/bin/bash #author:zhangyl #version:V1 #该脚本放置于压测脚本的上一层目 ...

  8. 利用Crowbar抓取网页异步加载的内容 [Python俱乐部]

    利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 在做 Web 信息提取.数据挖掘的过程中,一个关键步骤就是网页源代码的获取.但是出于各种原因 ...

  9. 写一个python脚本监控在linux中的进程

    在虚拟机中安装Linux中的CentOS7系统 https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for= ...

随机推荐

  1. Windows下获取文件的md5码的方法

    1.certutil 命令简介 本来想找一个工具 算一个文件的md5 或者是sha 值来着. 找到一个说法是 可以使用 windows 自带的命令行来处理 具体命令 certutil -hashfil ...

  2. isset与empty 的区别

    isset()与empty()函数的区别,isset()只需要验证一个值是否存在: 而empty()不但需验证这个值是否存在,还需检验它的值是否非空和非0: 注:isset()只检验一个变量是否已经设 ...

  3. php父级目录文件包函问题

    问题: php子目录不能包函父目录中的文件. 环境: 网站根目录:/var/www/html/ PHP版本: 5.3.3 Apache版本:2.2 好了,创建三个文件: //文件路径:/var/www ...

  4. dbgrid控件如何能在左边显示行号?

    procedure TMSWageEdit.aqyMSWageEditCalcFields(DataSet: TDataSet);begin  inherited;  with DataSet do  ...

  5. 计算机网络【2】—— CSMA/CD协议

    参考文献: https://blog.csdn.net/loveCC_orange/article/details/79177129 一.认识以太网 最早的以太网是将许多计算机都连接到一根总线上. 使 ...

  6. 【BZOJ3293】分金币(贪心)

    [BZOJ3293]分金币(贪心) 题面 BZOJ 洛谷 题解 和上一题一样啊. #include<cstdio> #include<cmath> #include<al ...

  7. Java考试题之十

    QUESTION 230 Given: 10. class One { 11. public One foo() { return this; } 12. } 13. class Two extend ...

  8. python调用powershell、远程执行bat

    python调用本地powershell方法 1.现在准备一个简陋的powershell脚本,功能是测试一个IP列表哪些可以ping通: function test_ping($iplist) { f ...

  9. OpenCV-跟我学一起学数字图像处理之中值滤波

    中值滤波(median filter)在数字图像处理中属于空域平滑滤波的内容(spatial filtering).对消除椒盐噪声具有很好的效果. 数学原理 为了讲述的便捷,我们以灰度图为例.RGB三 ...

  10. ORB原理与源码解析

    转载: http://blog.csdn.net/luoshixian099/article/details/48523267 CSDN-勿在浮沙筑高台 没有时间重新复制代码,只能一股脑的复制,所以代 ...