scrapy 的一个例子
1、目标:
scrapy 是一个爬虫构架,现用一个简单的例子来讲解,scrapy 的使用步骤
2、创建一个scrapy的项目:
创建一个叫firstSpider的项目,命令如下:
scrapy startproject firstSpider
[jianglexing@cstudio ~]$ scrapy startproject firstSpider
New Scrapy project 'firstSpider', using template directory '/usr/local/python-3.6.2/lib/python3.6/site-packages/scrapy/templates/project', created in:
/home/jianglexing/firstSpider You can start your first spider with:
cd firstSpider
scrapy genspider example example.com
3、创建一个项目时scrapy 命令干了一些什么:
创建一个项目时scrapy 会创建一个目录,并向目录中增加若干文件
[jianglexing@cstudio ~]$ tree firstSpider/
firstSpider/
├── firstSpider
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── __pycache__
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── __pycache__
└── scrapy.cfg directories, files
4、进入项目所在的目录并创建爬虫:
[jianglexing@cstudio ~]$ cd firstSpider/
[jianglexing@cstudio firstSpider]$ scrapy genspider financeSpider www.financedatas.com
Created spider 'financeSpider' using template 'basic' in module:
firstSpider.spiders.financeSpider
5、一只爬虫在scrapy 项目中对应一个文件:
[jianglexing@cstudio firstSpider]$ tree ./
./
├── firstSpider
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── __pycache__
│ │ ├── __init__.cpython-.pyc
│ │ └── settings.cpython-.pyc
│ ├── settings.py
│ └── spiders
│ ├── financeSpider.py # 这个就是刚才创建的爬虫文件
│ ├── __init__.py
│ └── __pycache__
│ └── __init__.cpython-.pyc
└── scrapy.cfg
6、编写爬虫的处理逻辑:
以爬取 http://www.financedatas.com 网站首页的title为例
# -*- coding: utf-8 -*-
import scrapy class FinancespiderSpider(scrapy.Spider):
name = 'financeSpider'
allowed_domains = ['www.financedatas.com']
start_urls = ['http://www.financedatas.com/'] def parse(self, response):
"""在parse方法中编写处理逻辑"""
print('*'*64)
title=response.xpath('//title/text()').extract() #xpath 语法抽取数据
print(title)
print('*'*64)
7、运行爬虫,查看效果:
[jianglexing@cstudio spiders]$ scrapy crawl financeSpider
-- :: [scrapy.utils.log] INFO: Scrapy 1.4. started (bot: firstSpider)
-- :: [scrapy.utils.log] INFO: Overridden settings: {'BOT_NAME': 'firstSpider', 'NEWSPIDER_MODULE': 'firstSpider.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['firstSpider.spiders']}
.... ....
-- :: [scrapy.core.engine] DEBUG: Crawled () <GET http://www.financedatas.com/robots.txt> (referer: None)
-- :: [scrapy.core.engine] DEBUG: Crawled () <GET http://www.financedatas.com/> (referer: None)
****************************************************************
['欢迎来到 www.financedatas.com'] # 这里就抽取到的数据
****************************************************************-- :: [scrapy.core.engine] INFO: Spider closed (finished)
----
scrapy 的一个例子的更多相关文章
- 用Scrapy写一个爬虫
昨天用python谢了一个简单爬虫,抓取页面图片: 但实际用到的爬虫需要处理很多复杂的环境,也需要更加的智能,重复发明轮子的事情不能干, 再说python向来以爬虫作为其擅长的一个领域,想必有许多成熟 ...
- spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...
- [转]使用Scrapy建立一个网站抓取器
英文原文:Build a Website Crawler based upon Scrapy 标签: Scrapy Python 209人收藏此文章, 我要收藏renwofei423 推荐于 11个月 ...
- ReCap 360 photo照片建模技术的又一个例子
这是我做的又一个利用Autodesk ReCap 360 照片建模技术做的一个例子.你可以下载模型自己把玩,或者下载原始照片自己试一试. 拍摄工具: 小米手机 照片数量:约120张 后期处理工具: p ...
- 从一个例子中体会React的基本面
[起初的准备工作] npm init npm install --save react react-dom npm install --save-dev html-webpack-plugin web ...
- 用thinkphp写的一个例子:抓取网站的内容并且保存到本地
我需要写这么一个例子,到电子课本网下载一本电子书. 电子课本网的电子书,是把书的每一页当成一个图片,然后一本书就是有很多张图片,我需要批量的进行下载图片操作. 下面是代码部分: public func ...
- Erlang 程序引发共享内存 bug 的一个例子
虽然 Erlang 的广告说得非常好,functional.share-nothing.消息传递,blah blah 的,好像用 Erlang 写并发程序就高枕无忧了,但是由于 Erlang 信奉高度 ...
- 对Jena的简单理解和一个例子
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...
- 使用flume的一个例子
新项目中需要使用到hadoop和vertica,使用flume把数据加载到hadoop中,我做了一个例子, 即监控一个sharefolder,如果里面有文件,则会文件load到hadoop. 开启Fl ...
随机推荐
- 正则 js截取时间
项目中要把时间截取,只要年月日,不要时分秒,于是 /\d{4}-\d{1,2}-\d{1,2}/g.exec("2012-6-18 00:00:00") 或者另一种 var dat ...
- SpringMVC上传文件的三种方式(转载)
直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...
- cp 命令(转)
原文:http://www.cnblogs.com/peida/archive/2012/10/29/2744185.html cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情 ...
- http 错误码对照表
代码 指示 2xx 成功 200 正常:请求已完成. 201 正常:紧接 POST 命令. 202 正常:已接受用于处理,但处理尚未完成. 203 正常:部分信息 — 返回的信息只是一部分. 204 ...
- grub安装的 三种安装方式
1. 引言 grub是什么?最常态的理解,grub是一个bootloader或者是一个bootmanager,通过grub可以引导种类丰富的系统,如linux.freebsd.windows等.但一旦 ...
- bash: fork: Resource temporarily unavailable
Last login: Wed Jul 26 09:19:11 2017 from ... -bash: fork: Resource temporarily unavailable -bash-3. ...
- 数据库选型之亿级数据量并发访问(MySQL集群)
刘 勇 Email:lyssym@sina.com 简介 针对实际应用中并发访问MySQL的场景,本文采用多线程对MySQL进行并发读取访问,其中以返回用户所需的数据并显示在终端为测试结束节点,即将 ...
- MySQL Workbench--Window安装试用
MySQL Workbench 01.概述 MySQL Workbench provides DBAs and developers an integrated tools environment f ...
- Android利用温度传感器实现带动画效果的电子温度计
概述 Android利用温度传感器实现带动画效果的电子温度计. 详细 代码下载:http://www.demodashi.com/demo/10631.html 一.准备工作 需要准备一部带有温度传感 ...
- leetcode || 58、Length of Last Word
problem: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', ret ...