1.初识Scrapy

Scrapy是为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或者存储历史数据等一系列的程序中。

2.选择一个网站

当需要从某个网站获取信息时,但该网站未提供API或者能通过程序获取信息的机制时,Scapy可以助你一臂之力。

3.定义想抓去的数据

在Scrapy中,通过Scrapy Items来完成的

import scrapy

   class Torrent(scrapy.Item):

    url=scrapy.Field()

    name=scrapy.Field()

    description=scrapy.Field()

    size=scrapy.Field()

4.编写提取数据的Spider

编写一个spider来定义初始URL,针对后续链接的规则以及从页面中提取数据的规则

使用XPath来从页面的HTML源码中选择需要提取的数据

结合自己的内容给出spider代码,eg:

5.执行spider,获取数据

运行spider来获取网站的数据,并以JSON格式存入到文件中:

scrapy crawl mininova -o scraped_data.json

命令中使用了feed导出 来导出JSON文件,可以修改到处格式或者存储后端,同时也可以编写管道将item存储到数据库中。

6.查看提取到数据

执行结束后,查看scraped_data.json,将看到提取到的item

7.还有什么?

  • Scrapy提供了很多强大的特性来使得爬取更为简单高效,例如:
  • HTML,XML源数据选择及提取的内置支持
  • 提供了一系列的spider之间共享的可复用的过滤器,对智能处理爬取数据提供了内置支持
  • 通过feed导出提供了多格式(JSON,CSV,XML),多存储后端(FTP,S3,本地文件系统)的内置支持
  • 提供了media pipeline,可以自动下载爬取到的数据中的图片(或者其他资源)
  • 高扩展性,可以通过使用signals,设计好的API(中间件,exetensions,pipelines)来定制实现您的功能。
  • 内置的中间件及扩展为下列功能提供了支持:
  1. cookies and session处理
  2. HTTP压缩
  3. HTTP认证
  4. HTTP缓存
  5. user-agent模拟
  6. robots.txt
  7. 爬取深度限制
  8. 其他
  • 针对非英语系统中不标准或者错误的编码声明,提供了自动检测及健壮的编码支持
  • 支持根据模板生成爬虫。在加速爬虫创建的同时,保持在大型项目中的代码更为一致
  • 针对多爬虫性能评估,失败检测,提供了可扩展的状态收集工具
  • 提供交互式shell终端,为测试XPath表达式,编写和调试爬虫提供了极大的方便
  • 提供System service,简化在生产环境的部署及运行
  • 内置Telnet终端,通过在Scrapy进程中钩入Python终端,可以查看并调试爬虫
  • Logging在爬虫过程中捕捉错误提供了方便
  • 支持Sitemaps爬取
  • 具有缓存的DNS解析器

Scrapy: 初识Scrapy的更多相关文章

  1. python自动化开发-[第二十四天]-高性能相关与初识scrapy

    今日内容概要 1.高性能相关 2.scrapy初识 上节回顾: 1. Http协议 Http协议:GET / http1.1/r/n...../r/r/r/na=1 TCP协议:sendall(&qu ...

  2. python爬虫框架scrapy初识(一)

    Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中.所谓网络爬虫,就是一个在网上到处或定向抓取数据的 ...

  3. scrapy框架系列 (1) 初识scrapy

    Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...

  4. 初识Scrapy之再续火影情缘

    前言Scrapy框架之初窥门径1 Scrapy简介2 Scrapy安装3 Scrapy基础31 创建项目32 Shell分析4 Scrapy程序编写41 Spiders程序测试42 Items编写43 ...

  5. 爬虫(十四):Scrapy框架(一) 初识Scrapy、第一个案例

    1. Scrapy框架 Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展程度非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架. 1.1 Scrapy介绍 ...

  6. python爬虫scrapy之scrapy终端(Scrapy shell)

    Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码. 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码. ...

  7. 第三百三十一节,web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令

    第三百三十一节,web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令 Scrapy框架安装 1.首先,终端执行命令升级pip: python -m pip install --u ...

  8. Scrapy之Scrapy shell

    Scrapy Shell Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据 ...

  9. 十 web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令

    Scrapy框架安装 1.首先,终端执行命令升级pip: python -m pip install --upgrade pip2.安装,wheel(建议网络安装) pip install wheel ...

随机推荐

  1. java 程序运行的基础知识【Java bytecode】

    聊聊文字,写一篇关于 java 基础知识的博文. JVM 线程栈 到 函数运行 每一个JVM线程来说启动的时候都会创建一个私有的线程栈.一个jvm线程栈用来存储栈帧,jvm线程栈和C语言中的栈很类似, ...

  2. Razon模板

    转:http://www.cnblogs.com/huangxincheng/p/3644313.html 随笔- 119 文章- 0 评论- 2039 抛弃NVelocity,来玩玩Razor   ...

  3. 猿团专访 |以技术推动发展 msup 成为企业经验智库

    随着企业的发展,几乎所有的管理者都有同样一个痛点:如何才能让自己的团队变得更强,技术能力更能匹配企业发展需求?msup的创立毫无疑问解决了这个难点. 麦思博(msup)有限公司发源于美国西雅图,是一家 ...

  4. ECNU 3263 - 丽娃河的狼人传说

    一定要纪念一下第一道在比赛中自己做出来的贪心. 题目链接:http://acm.ecnu.edu.cn/problem/3263/ Time limit per test: 1.0 seconds T ...

  5. 洛谷P4931 情侣!给我!烧了! 数论

    正解:数论 解题报告: 传送门 这题,想不到就很痛苦,但是理解了之后还是觉得也没有很难,,,毕竟实现不难QAQ 首先关于前面k对情侣的很简单,就是C(n,k)*C(n,k)*A(k,k)*2k 随便解 ...

  6. IO流(9)复制指定文件夹下指定文件到目的文件夹,并改名

    import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import ja ...

  7. oracle(一)复习起航

    住了三年的宿舍,前几天不得不搬走.也断了好几天网,所以顺手拿了本以前买的<oracle编程艺术>,感觉翻译的书就是有些地方读起来不通顺,好吃力. 还好以前有点oracle经验,不然真看不懂 ...

  8. scrapy的post登录:renren

    # -*- coding: utf-8 -*- import scrapy class RenrenSpider(scrapy.Spider): name = 'renren' allowed_dom ...

  9. 一次性从git远程仓库中克隆到本地。

    自动化工具 一次性从git远程仓库中克隆到本地. import os # git操作 将远程repo克隆到本地 def git_clone_cd_pull(url): # 获取仓库名称 如fullsp ...

  10. requests的post请求:百度翻译

    import json import requests class Trans(object): def __init__(self, juzi): self.juzi = juzi self.bas ...