简介

目标: 获取上交所和深交所所有股票的名称和交易信息。

输出: 保存到文件中。

技术路线:Scrapy爬虫框架

语言: python3.5

由于在上一篇博客中已经介绍了股票信息爬取的原理,在这里不再进行过多介绍,如需了解可以参考博客:链接描述,在本篇文章中主要讲解该项目在Scrapy框架中如何实现。

原理分析

Scrapy框架如下图所示:

我们主要进行两步操作:

(1) 首先需要在框架中编写一个爬虫程序spider,用于链接爬取和页面解析;

(2) 编写pipelines,用于处理解析后的股票数据并将这些数据存储到文件中。

代码编写

步骤:

(1) 建立一个工程生成Spider模板

打开cmd命令行,定位到项目所放的路径,输入:scrapy startproject BaiduStocks,此时会在目录中新建一个名字为BaiduStocks的工程。再输入:cd BaiduStocks进入目录,接着输入:scrapy genspider stocks baidu.com生成一个爬虫。之后我们可以在spiders/目录下看到一个stocks.py文件,如下图所示:

(2) 编写Spider:配置stocks.py文件,修改返回页面的处理,修改对新增URL爬取请求的处理

打开stocks.py文件,代码如下所示:

# -*- coding: utf-8 -*-

import scrapy

class StocksSpider(scrapy.Spider):

name = 'stocks'

allowed_domains = ['baidu.com']

start_urls = ['http://baidu.com/']

def parse(self, response):

pass

将上述代码修改如下:

# -*- coding: utf-8 -*-

import scrapy

import re

class StocksSpider(scrapy.Spider):

name = "stocks"

start_urls = ['http://quote.eastmoney.com/stocklist.html']

def parse(self, response):

for href in response.css('a::attr(href)').extract():

try:

stock = re.findall(r"[s][hz]\d{6}", href)[0]

url = 'https://gupiao.baidu.com/stock/' + stock + '.html'

yield scrapy.Request(url, callback=self.parse_stock)

except:

continue

def parse_stock(self, response):

infoDict = {}

stockInfo = response.css('.stock-bets')

name = stockInfo.css('.bets-name').extract()[0]

keyList = stockInfo.css('dt').extract()

valueList = stockInfo.css('dd').extract()

for i in range(len(keyList)):

key = re.findall(r'>.*', keyList[i])[0][1:-5]

try:

val = re.findall(r'\d+\.?.*', valueList[i])[0][0:-5]

except:

val = '--'

infoDict[key]=val

infoDict.update(

{'股票名称': re.findall('\s.*\(',name)[0].split()[0] + \

re.findall('\>.*\

yield infoDict

(3) 配置pipelines.py文件,定义爬取项(Scraped Item)的处理类

打开pipelinse.py文件,如下图所示:

# -*- coding: utf-8 -*-

# Define your item pipelines here

#

# Don't forget to add your pipeline to the ITEM_PIPELINES setting

# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html

class BaidustocksPipeline(object):

def process_item(self, item, spider):

return item

对上述代码修改如下:

# -*- coding: utf-8 -*-

# Define your item pipelines here

#

# Don't forget to add your pipeline to the ITEM_PIPELINES setting

# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html

class BaidustocksPipeline(object):

def process_item(self, item, spider):

return item

#每个pipelines类中有三个方法

class BaidustocksInfoPipeline(object):

#当一个爬虫被调用时,对应的pipelines启动的方法

def open_spider(self, spider):

self.f = open('BaiduStockInfo.txt', 'w')

#一个爬虫关闭或结束时的pipelines对应的方法

def close_spider(self, spider):

self.f.close()

#对每一个Item项进行处理时所对应的方法,也是pipelines中最主体的函数

def process_item(self, item, spider):

try:

line = str(dict(item)) + '\n'

self.f.write(line)

except:

pass

return item

(4) 修改settings.py,是框架找到我们在pipelinse.py中写的类

在settings.py中加入:

# Configure item pipelines

# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html

ITEM_PIPELINES = {

'BaiduStocks.pipelines.BaidustocksInfoPipeline': 300,

}

到这里,程序就完成了。

(4) 执行程序

在命令行中输入:scrapy crawl stocks

php 爬取股票数据库,爬虫框架Scrapy实战一——股票数据爬取相关推荐

  1. python爬京东联盟_python爬虫框架scrapy实战之爬取京东商城进阶篇

    前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧 ...

  2. python爬取新浪微博数据中心_Python爬虫框架Scrapy实战之批量抓取招聘信息

    网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户 ...

  3. Python分布式爬虫框架Scrapy实战

    TIOBE 更新了 2021 年 10 月份编程语言指数排行榜. 榜单中共对 100 种编程语言进行了评级排名,其中 Python 成为 "20 多年来的新语言霸主",以 11.2 ...

  4. python爬动态网页json_爬虫再探实战(四)———爬取动态加载页面——请求json...

    还是上次的那个网站,就是它.现在尝试用另一种办法--直接请求json文件,来获取要抓取的信息. 第一步,检查元素,看图如下: 过滤出JS文件,并找出包含要抓取信息的js文件,之后就是构造request ...

  5. 用 Python 爬虫框架 Scrapy 爬取心目中的女神

    From :http://www.cnblogs.com/wanghzh/p/5824181.html 本博文将带领你从入门到精通爬虫框架 Scrapy,最终具备爬取任何网页的数据的能力. 本文以校花 ...

  6. python爬虫scrapy爬取新闻标题及链接_python爬虫框架scrapy爬取梅花网资讯信息

    原标题:python爬虫框架scrapy爬取梅花网资讯信息 一.介绍 本例子用scrapy-splash爬取梅花网(http://www.meihua.info/a/list/today)的资讯信息, ...

  7. 【EduCoder答案】Scrapy爬虫(二)热门网站数据爬取

    简介 答案查询的入口网页版 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 Scrapy爬虫(二)热门网站数据爬取 >>>查看 第1关:猫眼电影排行TOP100信息 ...

  8. 精通python爬虫框架-精通Python爬虫框架Scrapy.pdf

    作 者 :(美)迪米特里奥斯·考奇斯·劳卡斯(Dimitrios Kouzis Loukas)著:李斌译 出版发行 : 北京:人民邮电出版社 , 2018.02 ISBN号 :978-7-115-47 ...

  9. 爬虫教程( 2 ) --- 爬虫框架 Scrapy、Scrapy 实战

    From:https://piaosanlang.gitbooks.io/spiders/content/ scrapy-cookbook :https://scrapy-cookbook.readt ...

最新文章

  1. arcgis9.1下载地址
  2. 区块链第二层扩容方案Plasma和Rollups
  3. 揭秘HPE的最新一代组合式基础设施Synergy
  4. python中的解析式是什么_初学python之解析式
  5. Hive 0.13 数据类型
  6. 厨师刀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. IntelliJ IDEA 的这个接口调试工具真是太好用了!
  8. java 二进制 归属权限_java 二进制 权限管理
  9. 致命车祸进展:Uber无人车检测到了行人,但选择了忽略
  10. 10句编程箴言 每个程序员都应该知道
  11. Redis主从配置,哨兵,集群的设计原理
  12. 很好用的绘图软件cad,非常喜欢这个简易方法
  13. 【人工智能】动物、植物、车型、菜品、LOGO识别示例代码
  14. 微博上看到的,小白兔系列
  15. 笔记本实现有线路由器功能
  16. 苹果内购后台(java)验证订单
  17. bixby服务器没响应,猫盘开启ssh教程(原版系统,听闻一键x3p已经不能用了!)...
  18. 即拼商城系统模式开发
  19. 2019年苹果申请邓白氏(和以前(2018年之前)相比多了【确认知悉涵】)
  20. tws蓝牙耳机p10双耳连接方法

热门文章

  1. 在微信小程序中,使用wxParse插件解析HTML/md富文本
  2. Android 换肤解决方案
  3. 软件测评基础知识(三)-性能效率与兼容性-中科软测认证中心
  4. Redis深入学习(三)Redis数据类型选择和应用场景
  5. 算法与数据结构(一):滑动窗口法总结
  6. 2020年终总结和展望
  7. 基于Javaweb的小项目(类似于qqzone) 5 ——登录功能实现
  8. 【软件设计师自学笔记】操作系统基本原理
  9. iOS大典之动态相册
  10. JavaScript事件 DOMNodeInserted DOMNodeRemoved