安装scrapy会出现错误,我们选择anaconda3作为编译环境,搜索scrapy安装(有错误自查)

创建scrapy爬虫项目:

  调出cmd,到相应目录:输入:

scrapy startproject stockstar

放置spide代码的目录文件   spider(用于编写爬虫)

项目中的item文件      items.py(用于保存所抓取的数据的容器,其存储方式类似于Python的字典)

项目的 中间件          middlewares.py(提供一种简便的机制,通过允许插入自定义代码来拓展scrapy的功能)

项目的pipelines文件     pipelines.py(核心处理器)

项目的 设置文件       settings.py

项目的配置文件         scrapy.cfg

创建项目后:在settings文件中有一句:

# Obey robots.txt rules
ROBOTSTXT_OBEY = True

有时候我们需要关闭:设为false

右击文件夹,在弹出的快捷键中选择:Mark Directory as --Sources Root,这样使导入包的语法更简洁

1.定义一个item容器:

在items.py中编写:

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

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html import scrapy
from scrapy.loader import ItemLoader
from scrapy.loader.processors import TakeFirst class StockstarItemLoader(ItemLoader):
#自定义itemloader,用于存储爬虫所抓取的字段内容
default_output_processor = TakeFirst() class StockstarItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
code = scrapy.Field() #股票代码
abbr = scrapy.Field() #股票简称
last_trade = scrapy.Field() #最新价
chg_ratio = scrapy.Field() #涨跌幅
chg_amt = scrapy.Field() #涨跌额
chg_ratio_5min = scrapy.Field() #5分钟涨幅
volumn = scrapy.Field() #成交量
turn_over = scrapy.Field() #成交额

settings.py加上:

from scrapy.exporters import JsonItemExporter
#默认显示的中文是阅读性较差的Unicode字符
#需定义子类显示出原来的字符集(将父类的ensure——ascii属性设置为False即可)
class CustomJsonLinesItemExporter(JsonItemExporter):
def __init__(self,file,**kwargs):
super(CustomJsonLinesItemExporter,self).__init__(file,ensure_ascii=False,**kwargs)
#启用新定义的Exporter类
FEED_EXPORTERS = {
'json':'stockstar.settings.CustomJsonLinesItemExporter',
}
DOWNLOAD_DELAY = 0.25

cmd进入项目文件:

输入:scrapy genspider stock quote.stockstar.com,生产spider代码

stock.py

# -*- coding: utf-8 -*-
import scrapy
from items import StockstarItem,StockstarItemLoader class StockSpider(scrapy.Spider):
name = 'stock' #定义爬虫名
allowed_domains = ['quote.stockstar.com']#定义爬虫域
start_urls = ['http://quote.stockstar.com/stock/ranklist_a_3_1_1.html']#定义爬虫连接 def parse(self, response):#撰写爬虫逻辑
page = int(response.url.split("_")[-1].split(".")[0])#抓取页码
item_nodes = response.css('#datalist tr')
for item_node in item_nodes:
#根据item文件所定义的字段内容,进行字段内容的抓取
item_loader = StockstarItemLoader(item=StockstarItem(),selector=item_node)
item_loader.add_css("code","td:nth-child(1) a::text")
item_loader.add_css("abbr","td:nth-child(2) a::text")
item_loader.add_css("last_trade","td:nth-child(3) span::text")
item_loader.add_css("chg_ratio","td:nth-child(4) span::text")
item_loader.add_css("chg_amt","td:nth-child(5) span::text")
item_loader.add_css("chg_ratio_5min","td:nth-child(6) span::text")
item_loader.add_css("volumn","td:nth-child(7)::text")
item_loader.add_css("turn_over","td:nth-child(8)::text")
stock_item = item_loader.load_item()
yield stock_item
if item_nodes:
next_page = page+1
next_url = response.url.replace("{0}.html".format(page),"{0}.html".format(next_page))
yield scrapy.Request(url=next_url,callback=self.parse)

在stockstar下添加一个main.py

from scrapy.cmdline import execute
execute(["scrapy","crawl","stock","-o","items.json"])
#等价于在cmd中输入:scrapy crawl stock -o items.json

执行:

Scrapy 抓取股票行情的更多相关文章

  1. 吴裕雄--天生自然PYTHON爬虫:使用Scrapy抓取股票行情

    Scrapy框架它能够帮助提升爬虫的效率,从而更好地实现爬虫.Scrapy是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含request异步调度和处理.下载器(多线程的Do ...

  2. 通过Scrapy抓取QQ空间

    毕业设计题目就是用Scrapy抓取QQ空间的数据,最近毕业设计弄完了,来总结以下: 首先是模拟登录的问题: 由于Tencent对模拟登录比较讨厌,各个防备,而本人能力有限,所以做的最简单的,手动登录后 ...

  3. python scrapy 抓取脚本之家文章(scrapy 入门使用简介)

    老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...

  4. scrapy抓取淘宝女郎

    scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找 ...

  5. 写一个shell脚本利用wget抓取股票历史数据

    今天,大数据部老大交给我一项任务——抓取股票历史数据.于是乎,我自行在网上找了一下,发现wget真真是一个非常强大的linux下载工具.我已经被深深震撼到了.下面叙述今天的一些过程,还是比较坎坷的. ...

  6. scrapy抓取拉勾网职位信息(一)——scrapy初识及lagou爬虫项目建立

    本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visua ...

  7. scrapy抓取的中文结果乱码解决办法

    使用scrapy抓取的结果,中文默认是Unicode,无法显示中文. 中文默认是Unicode,如: \u5317\u4eac\u5927\u5b66 在setting文件中设置: FEED_EXPO ...

  8. 分布式爬虫:使用Scrapy抓取数据

    分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘. ...

  9. 解决Scrapy抓取中文网页保存为json文件时中文不显示而是显示unicode的问题

    注意:此方法跟之前保存成json文件的写法有少许不同之处,注意区分 情境再现: 使用scrapy抓取中文网页,得到的数据类型是unicode,在控制台输出的话也是显示unicode,如下所示 {'au ...

随机推荐

  1. Exception in thread "main" org.springframework.beans.factory.BeanCreationException

    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error ...

  2. Luogu 4238 【模板】多项式求逆

    疯狂补板中. 考虑倍增实现. 假设多项式只有一个常数项,直接对它逆元就可以了. 现在假如要求$G(x)$ $$F(x)G(x) \equiv 1 (\mod x^n)$$ 而我们已经求出了$H(x)$ ...

  3. 【转载】mysql常用函数汇总

    转载地址:http://www.jb51.net/article/40179.htm 一.数学函数ABS(x)   返回x的绝对值BIN(x)   返回x的二进制(OCT返回八进制,HEX返回十六进制 ...

  4. 优秀前端工程师必备: (总结) 清除原生ios按钮样式

    写移动端的web开发时, 需要清除IOS本身的各种样式: 1.消除ios按钮原生样式, 给按钮加自定义样式: input[type="button"], input[type=&q ...

  5. javascript总结22: javascript的对象--面向对象编程

    1 对象:JavaScript 中的所有事物都是对象:字符串.数值.数组.函数. 对象与程序的关系: 程序 = 基于对象操作的算法 + 以对象为最小单位的数据结构 此外: 面向对象的本质就是让对象有多 ...

  6. Hadoop有点难

    从看<Hadoop权威指南>第一眼开始,我一直觉得Hadoop很难,很难.....看着这本书,我觉得好像是文言文,我是真的看不懂,我的一腔热血瞬间冷了下来!很幸运,但是也不幸运,我来到了一 ...

  7. 关于利用word发布文章到博客

    目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...

  8. Type Hierarchy

    Window - Preferences - General - Keys Name:         Open Type Hierarchy Description: Open a type hie ...

  9. ZooKeeper-3.4.10分布式安装指南

    目录 目录 1 1. 前言 1 2. 约定 1 3. 安装步骤 2 3.1. 配置/etc/hosts 2 3.2. 设置myid 2 3.3. 修改conf/zoo.cfg 2 3.4. 修改/bi ...

  10. Swift & Objc 在同一个项目中的使用

    在WWDC大会中发布了Swift让人眼前一亮.终于加了很多的现代编程语言该有的东西.很早年以前玩C#3.0+的时候这些差不多类似的 已经用的烂熟的东西终于一点一点的在看Swift Programmin ...