scrapy简介:
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试 一.基本使用
1. scrapy startproject 项目名称
- 在当前目录中创建中创建一个项目文件(类似于Django)
-cd 项目名称 进入项目目录 2. scrapy genspider [-t template] <name> <domain>
- 创建爬虫应用
如:
scrapy gensipider -t basic oldboy oldboy.com
scrapy gensipider -t xmlfeed autohome autohome.com.cn
PS:
查看所有命令:scrapy gensipider -l
查看模板命令:scrapy gensipider -d 模板名称 3. scrapy list
- 展示爬虫应用列表 4. scrapy crawl 爬虫应用名称 --nolog
- 运行单独爬虫应用
-----------------------------------------------------
二.项目结构 project_name/
   scrapy.cfg
   project_name/
       __init__.py
       items.py
       pipelines.py
       settings.py
       spiders/
           __init__.py
           爬虫1.py
           爬虫2.py
           爬虫3.py 
  文件说明:
  • scrapy.cfg  项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)
  • items.py    设置数据存储模板,用于结构化数据,如:Django的Model
  • pipelines    数据处理行为,如:一般结构化的数据持久化
  • settings.py 配置文件,如:递归的层数、并发数,延迟下载等
  • spiders      爬虫目录,如:创建文件,编写爬虫规则

-----------------------------------------------------------------------------------------------------

三.xpath选择器基本// 子子孙孙.// 当前子/ 儿子

/div[@id="i1"] 儿子中div标签切id为i1
/div[@id="i1"]/text() 获取某个标签的文本
obj.extract() 列表中每个字符串=》[]
obj.extract.first() 列表中每个字符串=》列表第一个元素 运用url做选择
// a[re:test(@href,"/all/hot/recent/\d+")]/@href 注:可在Chrome浏览器审查元素中,选中并copy xpath
css选择器略...
------------------------------------------------------------------
四. scrapy shell   用法:
scrapy shell www.baidu.com(domin)
  优点:调试作用域固定在domin上,调试个别代码不用启动整个框架,从而减少调试时间


五.常用函数
  • Request是一个封装用户请求的类,在回调函数中yield该对象表示继续访问
  • HtmlXpathSelector用于结构化HTML代码并提供选择器功能

   res = HtmlXpathSelector(response).select()

六.增加main,debug整框架

   

from scrapy.cmdline import execute
import sys
import os sys.path.append(os.path.dirname(os.path.abspath(__file__)))
execute(["scrapy", "crawl", "chouti", "--nolog"])

  

最新文章

  1. ASP.NET知识总结(3.HTTP协议详解)
  2. ThinkPHP 3.2.3 关联模型的使用
  3. C#的pictureBox怎样使用多张图片简单切换
  4. 使用水晶报表更新后出现“值不能为 null。 参数名: inputString”
  5. poj 1383 Labyrinth
  6. Objective-C Runtime 运行时之二:成员变量与属性
  7. PHP学习过程_Symfony_(2)
  8. Spark性能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势
  9. Linux 下按时间顺序批量删除文件
  10. Windows 编程,程序编译使用的命令行工具。
  11. Redis 实践3-操作
  12. shell脚本登录远程服务器并下载至本地
  13. Python运维开发:运算符与数据类型(二)
  14. (python)数据结构---集合
  15. 通过 Systemd Journal 收集日志
  16. fcn16s
  17. Python3学习笔记19-继承和多态
  18. mysql 清空表——truncate 与delete的区别
  19. 59 Cookie 与 Session
  20. 什么是Platform Services Controller

热门文章

  1. P1268 树的重量【构造】
  2. 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】
  3. 暂停后保存sql server profiler的跟踪结果
  4. eclipse新建web项目,并将其部署到tomcat
  5. Python-Django学习笔记(三)-Model模型的编写以及Oracle数据库的配置
  6. thinkphp5出现mkdir() Permission denied报错解决办法
  7. [国家集训队] Crash的数字表格 - 莫比乌斯反演,整除分块
  8. ASPxGridView 排序、分页、加载数据必需的三个函数
  9. C++查看大端小端模式
  10. C++中局部变量的返回