使用 Scrapy 爬取股票代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lovezww2011
V2EX    Python

使用 Scrapy 爬取股票代码

  •  
  •   lovezww2011
    geeeeeeeek 2019-02-25 16:49:37 +08:00 2921 次点击
    这是一个创建于 2449 天前的主题,其中的信息可能已经有所发展或是发生改变。

    个人博客: 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"; 
    5 条回复    2019-03-07 01:08:47 +08:00
    wenbinwu
        1
    wenbinwu  
       2019-02-25 16:57:58 +08:00
    挺好的,加个 gitignore 文件把 pc 文件都删掉
    JCZ2MkKb5S8ZX9pq
        2
    JCZ2MkKb5S8ZX9pq  
       2019-02-25 17:00:01 +08:00
    可以试试 tushare
    Martzki
        3
    Martzki  
       2019-02-25 21:24:04 +08:00
    老哥你好,最近在学 scrapy-splash,我的 splash 似乎没有起到渲染的作用,不知道是 splash 的问题还是网页的问题。
    具体来说,是爬取一个表格,表头存在,表内容由 JS 函数填充。
    网页: https://www.aqistudy.cn/historydata/daydata.php?city=%E6%AD%A6%E6%B1%89&mOnth=201312
    splash 版本:3.3.1
    OS 版本:Windows 10 专业版
    ranlele
        4
    ranlele  
       2019-03-06 17:50:55 +08:00
    @Martzki wait 多等几秒试试
    911speedstar
        5
    911speedstar  
       2019-03-07 01:08:47 +08:00
    scrapy-splash 用于处理动态请求,需要等待 js 加载完
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4513 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 04:05 PVG 12:05 LAX 20:05 JFK 23:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86