使用 Scrapy 爬取股票代碼


個人博客: 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";


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM