股票数据Scrapy爬虫实例(亲测有效)
步骤:
步骤1:建立工程和Spider模板
- scrapy startproject BaiduStocks
- cd BaiduStocks
- scrapy genspider stocks baidu.com
- 进一步修改spiders/stocks.py
这一步自行完成~
步骤2:编写Spider
- 配置stocks.py文件
- 修改对返回页面的处理
- 修改对新增URL爬取请求的处理(stocks.py)
# -*- coding: utf-8 -*-
import scrapy
import re class StocksSpider(scrapy.Spider):
name = 'stocks'
start_urls = ['http://quote.eastmoney.com/stock_list.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 = 'http://gu.qq.com/' + stock + '/gp'
yield scrapy.Request(url, callback=self.parse_stock)
except:
continue def parse_stock(self, response):
infoDict = {}
stockName = response.css('.title_bg')
stockInfo = response.css('.col-2.fr')
name = stockName.css('.col-1-1').extract()[0]
code = stockName.css('.col-1-2').extract()[0]
info = stockInfo.css('li').extract()
for i in info[:13]:
key = re.findall('>.*?<', i)[1][1:-1]
key = key.replace('\u2003', '')
key = key.replace('\xa0', '')
try:
val = re.findall('>.*?<', i)[3][1:-1]
except:
val = '--'
infoDict[key] = val infoDict.update({'股票名称': re.findall('\>.*\<', name)[0][1:-1] + \
re.findall('\>.*\<', code)[0][1:-1]})
yield infoDict
其中的key=re.replace('\u2003',''),key=re.replace('\xa0','')分别是为了除去爬取的字符串中的无用部分,如 等,网页抓取时会因为编码原因转化成\xa0,所以我们需要进行替换,得到较为美观的字符串.
步骤3:编写ITEM Pipelines
- 配置pipelines.py文件
- 定义对爬取项(Scrapy Item)的处理类(pipelines.py)
# -*- coding: utf-8 -*- # Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html class ScrapyGupiaoPipeline:
def process_item(self, item, spider):
return item class ScrapyGupiaoPipeline:
def open_spider(self, spider):
self.f = open('gupiao.txt', 'w') def close_spider(self, spider):
self.f.close() def process_item(self, item, spider):
try:
line = str(dict(item)) + '\n'
self.f.write(line)
except:
pass
return item
步骤四:配置ITEM_PIPELINES选项(settings.py)
# Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
'BaiduStocks.pipelines.ScrapyGupiaoPipeline': 300,
}
股票数据Scrapy爬虫实例(亲测有效)的更多相关文章
- 股票数据Scrapy爬虫
功能描述: 技术路线:scrapy 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 数据网站的确定 获取股票列表: 东方财富网:http://quote.eastmoney.co ...
- 简单scrapy爬虫实例
简单scrapy爬虫实例 流程分析 抓取内容:网站课程 页面:https://edu.hellobi.com 数据:课程名.课程链接及学习人数 观察页面url变化规律以及页面源代码帮助我们获取所有数据 ...
- scrapy爬虫实例(1)
爬虫实例 对象 阳光问政平台 目标 : 主题,时间,内容 爬取思路 预先设置好items import scrapy class SuperspiderItem(scrapy.Item): title ...
- Scrapy爬虫实例——校花网
学习爬虫有一段时间了,今天使用Scrapy框架将校花网的图片爬取到本地.Scrapy爬虫框架相对于使用requests库进行网页的爬取,拥有更高的性能. Scrapy官方定义:Scrapy是用于抓取网 ...
- Scrapy爬虫实例教程(二)---数据存入MySQL
书接上回 实例教程(一) 本文将详细描述使用scrapy爬去左岸读书所有文章并存入本地MySql数据库中,文中所有操作都是建立在scrapy已经配置完毕,并且系统中已经安装了Mysql数据库(有权限操 ...
- Scrapy 爬虫实例教程(一)---简介及资源列表
Scrapy(官网 http://scrapy.org/)是一款功能强大的,用户可定制的网络爬虫软件包.其官方描述称:" Scrapy is a fast high-level screen ...
- python scrapy 爬虫实例
1 创建一个项目 scrapy startproject basicbudejie 2 编写爬虫 import scrapy class Basicbudejie(scrapy.Spider): na ...
- C++ Const 使用总结,代码实例亲测
1. 修饰普通变量 修饰变量语法 const TYPE value <==> TYPE const value 两者等价, 变量不可修改,无需说明. 2. 修饰指针 首先看下面一段 代码 ...
- 【Python爬虫实战】Scrapy框架的安装 搬运工亲测有效
windows下亲测有效 http://blog.csdn.net/liuweiyuxiang/article/details/68929999这个我们只是正确操作步骤详解的搬运工
- 实时获取股票数据,免费!——Python爬虫Sina Stock实战
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 实时股票数据的重要性 对于四大可交易资产:股票.期货.期权.数字货币来说,期货.期权.数字货币,可以从交 ...
随机推荐
- EF getCookie
table class="table table-bordered"> <thead> <tr> <td>商品名称</td> ...
- 将map转为Bean的工具类 BeanUtil
Map<String,Object> pbclwhMainMap = (Map<String,Object>)param.get("pbclwhMain") ...
- 理解Node.js中的流(译)
前言 本文部分译自by: Liz Parody in Node.js, 2019.11.23,英文良好的同学建议阅读原版. Node.js中的流是众所周知的难理解,而且更加难用.按照Dominic T ...
- vue实现自定义字体库
先看效果是不是你所需要的,再看具体如何实现. 效果如下图所示: 有些字体需要下载,用图片就会变得很不清楚,这样我们就需要去下载字体库,操作步骤如下: 首先找到需要下载的字体库 然后放在项目里面 然后定 ...
- wampserver APACHE配置文件 和 单独安装APACHE 的配置文件 的区别
wampserver APACHE配置文件: 单独安装APACHE 的配置文件
- 云服务器搭建redis主从复制以及哨兵模式(附踩坑记录)
云服务器搭建redis主从复制以及哨兵模式(附踩坑记录) 踩坑记录见最后 搭建一主两从: 在根目录下任意新建一个目录/myredis来存放配置文件: 将我们常用的redis.conf文件拷贝到该目录下 ...
- 如果遇到This QueryDict instance is immutable错误
添加数据的时候,大家遇到"This QueryDict instance is immutable". 唯一的解决方法是request.data.copy()即可成功实现添加功能
- git命令2
git status git status -s git diff git diff --cached --添加到暂存区成为快照 git add -A git add . --删除被git追踪的文件 ...
- 10.14 2020 实验 7:OpenDaylight 实验——Python 中的 REST API 调用
一.实验目的 对 Python 调用 OpenDaylight 的 REST API 方法有初步了解. 二.实验任务 本实验需要用另一种方法完成上一个实验相同的功能,即通过 Python 程序 ...
- Flink学习系列——简介
Flink起源 德国柏林 Flink的目标 低延迟 高吞吐 较高的准确性(乱序数据的处理) 良好的容错性(容错性差的表现:一个节点挂了,全部回滚重新做计算,这对实时性要求高的场景非常致命)