Scrapy框架学习(二)Scrapy入门
接下来以爬取quote.toscrape.com为例完成一遍Scrapy的抓取流程。
首先创建一个Scrapy项目。打开命令行,输入以下命令:
scrapy startproject projectname
即可在当前位置创建一个Scrapy项目。我们创建一个名为tutorial的项目:
scrapy startproject tutorial
可以看到当前位置出现了一个名为tutorial的文件夹,这代表着项目已经创建完毕。
接下来我们需要创建一个Spider。Spider负责从网页中抓取内容并返回解析结果。创建Spider需继承scrapy.Spider类在命令行中输入:
cd tutorial
scrapy genspider quotes quotes.toscrape.com
以上命令建立了一个名为QuotesSpider的Spider,可以在项目文件夹找到。
接下来我们需要定义Item。Item是保存数据的容器。创建Item需要继承scrapy.Item类,并且定义类型为scrapy.Field的字段。打开浏览器开发者工具,我们观察到我们将爬取的内容有text、author、tags。定义Item,将items.py修改如下:
import scrapy class QuoteItem(scrapy.Item):
text = scrapy.Field()
author = scrapy.Field()
tags = scrapy.Field()
查看网页源码,每页有多个class为quote的块,块中包含我们想要爬取的内容,那么我们先找出所有的quote,然后提取每个quote的内容。提取完毕后,我们需要将下一页的url提交给Engine。这一部分工作由Spider来完成。修改quotes.py如下:
# -*- coding: utf-8 -*-
import scrapy
from tutorial.items import QuoteItem class QuotesSpider(scrapy.Spider):
name = 'quotes'
allowed_domains = ['quotes.toscrape.com']
start_urls = ['http://quotes.toscrape.com/'] def parse(self, response):
quotes = response.css('.quote')
for quote in quotes:
item = QuoteItem()
item['text'] = quote.css('.text::text').extract_first()
item['author'] = quote.css('.author::text').extract_first()
item['tags'] = quote.css('.tags .tag::text').extract()
yield item next = response.css('.paper .next a::attr(href)').extract_first()
url = response.urljoin(next)
yield scrapy.Request(url=url,callback=self.parse)
这里我们使用了css选择器进行提取,当然也可以用Xpath进行提取。extract_first()方法返回第一个匹配到的元素,extract()则返回匹配到的所有元素的列表。
代码中我们用了QuoteItem,这是一个Item对象,我们可以将它理解为一个字典,用来存放spider解析后的数据。
通过以上修改,我们已经完成了一个网站爬虫的所有工作。现在让我们来运行它!在命令行中输入:
scrapy crawl quotes
即可看到爬取的结果。
Scrapy框架学习(二)Scrapy入门的更多相关文章
- 自己的Scrapy框架学习之路
开始自己的Scrapy 框架学习之路. 一.Scrapy安装介绍 参考网上资料,先进行安装 使用pip来安装Scrapy 在开始菜单打开cmd命令行窗口执行如下命令即可 pip install Scr ...
- scrapy框架(二)
scrapy框架(二) 一.scrapy 选择器 概述: Scrapy提供基于lxml库的解析机制,它们被称为选择器. 因为,它们“选择”由XPath或CSS表达式指定的HTML文档的某部分. Sca ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- scrapy框架学习之路
一.基础学习 - scrapy框架 介绍:大而全的爬虫组件. 安装: - Win: 下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted pip3 ...
- scrapy框架学习
一.初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, 网 ...
- Scrapy 框架 (学习笔记-1)
环境: 1.windows 10 2.Python 3.7 3.Scrapy 1.7.3 4.mysql 5.5.53 一.Scrapy 安装 1. Scrapy:是一套基于Twisted的一部处理框 ...
- Scrapy框架学习 - 使用内置的ImagesPipeline下载图片
需求分析需求:爬取斗鱼主播图片,并下载到本地 思路: 使用Fiddler抓包工具,抓取斗鱼手机APP中的接口使用Scrapy框架的ImagesPipeline实现图片下载ImagesPipeline实 ...
- Scrapy框架学习笔记
1.Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网 ...
- Python3爬虫(十八) Scrapy框架(二)
对Scrapy框架(一)的补充 Infi-chu: http://www.cnblogs.com/Infi-chu/ Scrapy优点: 提供了内置的 HTTP 缓存 ,以加速本地开发 . ...
- Scrapy框架学习(一)Scrapy框架介绍
Scrapy框架的架构图如上. Scrapy中的数据流由引擎控制,数据流的过程如下: 1.Engine打开一个网站,找到处理该网站的Spider,并向该Spider请求第一个要爬取得URL. 2.En ...
随机推荐
- Webbench的使用
Webbench是一个在linux下使用的非常简单的网站压测工具. 它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力 ...
- VS 2015 IDE 不支持 MS SQL 2000 生成 dbml
解决办法: 通过命令手动生成 然后把生成的ERendering.dbml 文件,通过工程项目-添加-现有项,加入项目.
- 忽略warning 警告
1
- Review notes
- (USB HID) Report Descriptor 理解
在這理整理一下基本 Report Descriptor 對於入門基礎的了解. 在很多文件.Blog都有提到HID report 總共分為3種 : Input.Output.Feature report ...
- Doc/Docx/PDF to Html
TODO 判断源文件是否有格式??
- 第九届蓝桥杯大赛个人赛决赛(软件类)真题Java
更新中.......... 同一年的题解:https://www.cnblogs.com/dgwblog/p/10111903.html 01 结果填空 (满分11分) 标题:年龄问题 s夫人一向 ...
- JVM理解
在阅读本文之前,先向大家强烈推荐一下周志明的<深入理解Java虚拟机>这本书. 前些天面试了阿里的实习生,问到关于Dalvik虚拟机能不能执行class文件,我当时的回答是不能,但是它执行 ...
- 【算法笔记】B1040 有几个PAT
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 ...
- CDQZ Day7
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #i ...