Scrapy使用教程
简介
搜到这篇文章的不用多说都是准备玩爬虫的,scrapy的基本信息不多做解释分析,直接上教程。
Scrapy 安装
编译环境:Anaconda 3
pip install scrapy
命令
# 创建Scrapy爬虫项
scrapy startproject 项目名
# 创建爬虫文件
cd 项目名
scrapy genspider 爬虫名 目标域名
# 启动scrapy项目
scrapy crawl 爬虫名
分析
接下来对几个重点的位置进行分析
代码结构
- spiders:放置爬虫代码的目录文件,用于编写爬虫。
- items.py:用于保存所抓取的数据的容器,其存储方式类似于 Python 的字典。
- middlewares.py:项目的中间件,提供一种简便的机制,通过允许插入自定义代码来拓展 Scrapy 的功能。
- pipelines.py:项目的核心处理器。
- settings.py:项目的设置文件。
- scrapy.cfg:项目的配置文件。
setting.py
创建 scrapy 项目以后,在 settings 文件中有这样的一条默认开启的语句:
ROBOTSTXT_OBEY = True
robots.txt 是遵循 Robot 协议的一个文件,在 Scrapy 启动后,首先会访问网站的 robots.txt 文件,然后决定该网站的爬取范围。通常我们需要将此配置项设置为 False:
ROBOTSTXT_OBEY = False
items.py
对所要抓取的网页数据进行分析,定义所爬取记录的数据结构。
在相应的 items.py 中建立相应的字段,例如:
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() # 成交额
编写爬虫逻辑
生成的 spider 代码中,件会生成 start_url,即爬虫的起始地址,并且创建名为 parse 的自定义函数,之后的爬虫逻辑将在 parse 函数中书写,例:
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_itemif item_nodes:next_page = page + 1next_url = response.url.replace ("{0}.html".format (page) , "{0}.html".format(next_page))yield scrapy.Request(url=next_url, callback=self.parse)
代码调试
为了调试方便,在根目录下新建一个 main.py,调试代码如下:
from scrapy.cmdline import execute
execute(["scrapy","crawl","lewis"])
其等价于在根目录下执行命令“scrapy crawl lewis”。
基础的内容就在这,其余的都是拓展内容了。
Scrapy使用教程相关推荐
- scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...
- linux下scrapy安装教程,linux centos7安装scrapy
linux centos7安装scrapy 时间:2018-01-02 17:41作者:scrapy中文网阅读: 本scrapy中文教程主要介绍,centos7 linux下scrapy的安装,pyt ...
- Python之 - 使用Scrapy建立一个网站抓取器,网站爬取Scrapy爬虫教程
Scrapy是一个用于爬行网站以及在数据挖掘.信息处理和历史档案等大量应用范围内抽取结构化数据的应用程序框架,广泛用于工业. 在本文中我们将建立一个从Hacker News爬取数据的爬虫,并将数据按我 ...
- Python Scrapy中文教程,Scrapy框架快速入门!
谈起爬虫必然要提起 Scrapy 框架,因为它能够帮助提升爬虫的效率,从而更好地实现爬虫. Scrapy 是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含 request ...
- python scrapy菜鸟教程_scrapy学习笔记(一)快速入门
安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...
- python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍
从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...
- pycharm创建scrapy项目教程及遇到的坑
最近学习scrapy爬虫框架,在使用pycharm安装scrapy类库及创建scrapy项目时花费了好长的时间,遇到各种坑,根据网上的各种教程,花费了一晚上的时间,终于成功,其中也踩了一些坑,现在整理 ...
- Scrapy入门教程
本文参考Scrapy Tutorial里面的文档,翻译出来加上自己的理解,供大家学习. 在本文中,我们将学会如何使用Scrapy建立一个爬虫程序,并爬取指定网站上的内容,这一切在Scrapy框架内实现 ...
- Scrapy 爬虫教程导航
From:https://brucedone.com/archives/771 8个最高效的 Python 爬虫框架 1. Scrapy.Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用 ...
- scrapy 简单教程
首先,在教程(二)(http://blog.csdn.net/u012150179/article/details/32911511)中,研究的是爬取单个网页的方法.在教程(三)(http://blo ...
最新文章
- 计算C#程序执行时间
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 第十三章:Python の 网络编程进阶(二)
- ADO.NET、ODP.NET、Linq to SQL、ADO.NET Entity 、NHibernate在Oracle下的性能比较
- 如何将原图和json融合_用 base64 进行图片和字符串互转,并保存至 json
- fonts.googleapis.com不能访问时的解决方法
- php检测是否存在敏感词,如何用PHP+Ajax判断是否有敏感词汇
- JQuery弹出菜单时禁止页面(body)滚动
- webmin的vsftp插件
- 狂神说springboot源码_狂神说SpringBoot04:JSR303数据校验及多环境切换
- Spring Boot学习记之Maven
- Python爬虫之JS逆向分析技巧
- LeetCode详解C++版
- 社招的我,在酷家乐的野蛮生长
- windows或linux下用Virtualbox安装Win 8.1等系统错误0x000000C4解决办法
- 【转】很实用的编程英语词库,共收录一千五百余条词汇
- day46 html
- 高项 案例分析重点知识 进度成本质量
- 开启mysql服务注意事项
- 形式化语言——时序逻辑