使用scrapy抓取股票代碼

文章來源:mypython.mecss

源碼地址:github.com/geeeeeeeek/…html

抓取工具:scrapypython

scrapy介紹

Scrapy是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架。 能夠應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。其最初是爲了 頁面抓取 (更確切來講, 網絡抓取 )所設計的, 也能夠應用在獲取API所返回的數據(例如 Amazon Associates Web Services ) 或者通用的網絡爬蟲。git

安裝scrapygithub

pip install Scrapy
複製代碼

抓取步驟

選擇一個網站 --> 定義數據 --> 編寫spiderbash

首先使用scrapy建立一個項目網絡

scrapy startproject tutorial
複製代碼
  1. 選擇一個網站

這裏咱們選擇的是東方財富網的股票代碼頁面:quote.eastmoney.com/stocklist.h…框架

  1. 定義要抓取的數據

咱們須要抓取股票的代碼id,所以只須要定義stock_idscrapy

class StockItem(scrapy.Item):
    stock_id = scrapy.Field()
複製代碼
  1. 編寫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來過濾本身須要的數據。ide

運行程序

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
…
複製代碼

若是要查詢單個股票的股票行情,能夠使用新浪的股票接口:

hq.sinajs.cn

例如

hq.sinajs.cn/list=s_sh60…

便可獲得浪潮軟件的股票行情

var hq_str_s_sh600756="浪潮軟件,19.790,1.140,6.11,365843,70869";
複製代碼
相關文章
相關標籤/搜索