个人博客: https://mypython.me

源码地址: https://github.com/geeeeeeeek/scrapy_stock

抓取工具:scrapy

scrapy 介绍

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取 API 所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

安装 scrapy

pip install Scrapy

抓取步骤

选择一个网站 --> 定义数据 --> 编写 spider

首先使用 scrapy 创建一个项目

scrapy startproject tutorial

1.选择一个网站

这里我们选择的是东方财富网的股票代码页面: http://quote.eastmoney.com/stocklist.html

2.定义要抓取的数据

我们需要抓取股票的代码 id,因此只需要定义 stock_id

class StockItem(scrapy.Item):
stock_id = scrapy.Field()

3.编写 spider

class StockSpider(scrapy.Spider):
name = 'stock' def start_requests(self):
url = 'http://quote.eastmoney.com/stocklist.html'
yield Request(url) def parse(self, response):
item = StockItem()
print "===============上海================"
stocks_sh = response.css('div#quotesearch ul li a[href*="http://quote.eastmoney.com/sh"]::text')
for stock in stocks_sh:
item['stock_id'] = 's_sh' + re.findall('\((.*?)\)', stock.extract())[0]
yield item print "===============深圳================"
stocks_sz = response.css('div#quotesearch ul li a[href*="http://quote.eastmoney.com/sz"]::text')
for stock in stocks_sz:
item['stock_id'] = 's_sz' + re.findall('\((.*?)\)', stock.extract())[0]
yield item

玄机尽在response.css('div#quotesearch ul li a[href*="http://quote.eastmoney.com/sh"]::text ’),使用了 css 来过滤自己需要的数据。

运行程序

scrapy crawl stock -o stock.csv

即可生成 stock.csv 文件

预览如下:

stock_id
s_sh201000
s_sh201001
s_sh201002
s_sh201003
s_sh201004
s_sh201005
s_sh201008
s_sh201009
s_sh201010
s_sh202001
s_sh202003
s_sh202007
s_sh203007
s_sh203008
s_sh203009

如果要查询单个股票的股票行情,可以使用新浪的股票接口:

http://hq.sinajs.cn

例如

http://hq.sinajs.cn/list=s_sh600756

即可得到浪潮软件的股票行情

var hq_str_s_sh600756="浪潮软件,19.790,1.140,6.11,365843,70869";

最新文章

  1. winform进程、线程、TreeView递归加载
  2. jquery版相片墙(鼠标控制图片聚合和散开)
  3. div显示提示信息
  4. Java字节流与字符流基本操作
  5. python多线程备份MYSQL数据库并删除旧的备份。
  6. jquery基础总结
  7. iOS ARC环境下dealloc的使用
  8. mac系统如何进行剪切
  9. Android应用框架浅析
  10. public View getView(int position, View convertView, final ViewGroup parent)三个参数的意思
  11. EL表达式 入门
  12. php笔记06:http响应中的状态码
  13. 微信公众平台接口,asp.net实现
  14. ECOS-Ecstore证书生产失效问题排查
  15. IO流-输入输出的简单实例
  16. Prometheus使用入门
  17. ios打包 上架 了解
  18. Python(五) —— 内置模块
  19. Java 浮点数精度丢失
  20. 转 Multiple outputs from T4 made easy t4生成多文件

热门文章

  1. 史上最最靠谱,又双叒叒简单的基于MSXML的XML解析指南-C++
  2. Java:基于MD5的文件监听程序
  3. [翻译 EF Core in Action 1.8] MyFirstEfCoreApp应用程序设置
  4. C# 操作Word目录——生成、删除目录
  5. TCP的三次握手与四次挥手
  6. Restframe_work 回顾记忆集
  7. 多线程总结之旅(1):线程VS进程
  8. this指针的初运用
  9. emscripten、 WebAssembly,传递字符串给c函数
  10. Pytorch系列教程-使用Seq2Seq网络和注意力机制进行机器翻译