个人博客: https://mypython.me
源码地址: https://github.com/geeeeeeeek/scrapy_stock
抓取工具: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/list=s_sh600756
即可得到浪潮软件的股票行情
var hq_str_s_sh600756="浪潮软件,19.790,1.140,6.11,365843,70869";
1
wenbinwu 2019-02-25 16:57:58 +08:00
挺好的,加个 gitignore 文件把 pyc 文件都删掉
|
2
JCZ2MkKb5S8ZX9pq 2019-02-25 17:00:01 +08:00
可以试试 tushare
|
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 专业版 |
5
911speedstar 2019-03-07 01:08:47 +08:00
scrapy-splash 用于处理动态请求,需要等待 js 加载完
|