1< scrapy的安装


命令行安装
pip install scrapy
<常见错误是缺少 wim32api
安装win32api
pip install pywin32
<还有就是twisted没有安装
到链接找到对应的版本下载安装
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

命令行打开输入pip install 把文件拖进来就OK了

2<scrapy基础


scrapy优点:

  • 提供了内置的HTTP缓存,以加速本地开发

  • 童工了自动节流调节机制,而且具有遵守robots.txt的内置的能力

  • 可以定义爬行深度的限制,以避免爬虫进入死循环链接

  • 会自动保留会话

  • 执行自动HTTP基本认证,不需要明确保存状态

  • 可以自动填写登入表单

  • scrapy有一个内置的中间件,可以自动设置请求中的引用头referrer

  • 支持通过3XX响应重定向,也可以通过HTML元刷新

  • 避免被网站使用的<noscript>meta重定向困住,以检测没有JS支持的页面

  • 默认使用CSS选择器或者Xpath编写解析器

  • 可以通过Splash或任何其他技术Selenium呈现JavaScript页面

  • 拥有强的社区支持和丰富的插件和扩展来扩展其功能

  • 提供了通用的蜘蛛来抓取常见的格式,站点地图CSV和XML

  • 内置支持以多种格式(JSON,CSV,XML,JSON-lines)导出收集的数据并储存在多个后端FTP S3 本地文件系统中

Scrapy 架构

Scrapy 执行过程

1 引擎打开一个网站 open a domain 找到处理该网站的Spider并向该Spider请求第一个爬取的URL

2 引擎从Spider中获取第一个要爬取的URL并在调度器Scheduler中以Request调度

3 引擎向调度器请求下一个要爬取的URL

4 调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件请求request方向转发给下载器

5 一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回Response方向)发送给引擎

6 引擎从下在其中接收Response并通过Spider中间件(输入方向)发送给Spider处理

7 Spider处理Response并返回爬取到的Item及(跟进的新的Request给引擎

8 引擎将(Spider返回的)爬取到的Item给Item Pipeline,将Spider返回的Request给调度器

9 从第2步 重复知道调度器中没有更多的Request,引擎关闭对该网站的执行进程

3<scrapy使用


scarpy 使用命令操作

创建一个scrapy工程

scrapy startproject <your-project-name>
# 例如 创建一个名为first_spider工程
scrapy startproject first_spider

所在的目录就创建了一个first_spider的目录

我们看一下这个目录的结构

  • __init__.py   #包定义

  • items.py       #模型定义

  • pipeline.py        #管道定义

  • settings.py        #配置文件

  • spiders              #蜘蛛文件夹

  • __init__.py    #默认的蜘蛛代码文件

  • scrapy,py          #Scrapy的运行配置文件

最新文章

  1. centos6.5 卸载php
  2. 用JQuery Ajax 与一般处理程序 请求数据无刷新,以及如何调试错误
  3. srand()以及rand()函数用法
  4. KMP 算法
  5. 2014中国软件开发者调查(二):Java、.NET、Web、云计算特点
  6. java在目录中过滤文件
  7. android sdk 国内镜像地址
  8. SAP 物料主数据屏幕增强
  9. Linux 下Valgrind 使用
  10. String类中toCharArray()方法的用法
  11. AOP举例子
  12. [Javascript] Proper use of console.assert in JavaScript
  13. jprofiler安装和配置
  14. 关于linux 原始套接字编程
  15. python中的编码问题
  16. Recurrent Neural Networks(RNN) 循环神经网络初探
  17. SQL Server死锁诊断--同一行数据在不同索引操作下引起的死锁
  18. ppt制作动态表格与文字
  19. module.js:549 throw err;
  20. Xtrabackup简介

热门文章

  1. 从打击App刷榜看苹果的底线
  2. 批量将网页转换成图片或PDF文档技巧分享
  3. ubuntu16.04安装flash player
  4. POJ 2610:Dog &amp; Gopher
  5. Robert 的军队
  6. JZOJ 5461 购物 —— 贪心
  7. linux下的so、o、lo、a、la文件的区别
  8. maven的pom.xml文件错误
  9. sql简单学习---备忘
  10. [Swift通天遁地]九、拔剑吧-(3)创建多种自定义Segment分段样式的控件