scrapy学习记录
scrapy是一个用来爬取一个或多个网站的数据,提取数据的应用框架。下载过程非常复杂,而且会遇到各种问题。所以写个博客来记录下。
安装好python2.7之后,就可以开始。安装scrapy前还需要安装其他的库,都放在云盘里了地址是http://pan.baidu.com/s/1hsFh836,基本都是exe文件,直接安装就可以,用的是window64位,里面有个不是exe的文件,用pip install安装即可,都安装好了之后,就可以pip install scrapy安装scrapy了。要验证某个库是否安装成功,import 库名就行,没提示错误就代表安装成功。
scrapy的教程链接http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html,是中文的官方文档(如果我没搞错的话),基本都是中文,不排除有些地方没翻译完全。里面有基本的实例,教你怎么用scrapy写爬虫,但是,提供的start_url里的url貌似被墙了,所以你跟着教程来爬不到任何东西,不过没关系,至少我们了解了一些基本的知识。除了基本实例,还有各种用到的类的详细说明。
Item类其实就是一个字典,用法和字典一毛一样。
Spider类在我看来是最重要的。Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。个人觉得这些其实就是爬虫的核心。其中的参数有name,allowed_domains,start_url,parse方法其实不止这些,这些只是创建项目的时候就创建好的。
name就是爬虫的名字喽,必须是唯一的。
allowed_domains就是域名白名单,我一直不明白是什么意思,大概是限制爬虫爬取的东东吧,防止爬虫其他的不是我们想要的地方。不知道这样理解对不对
start_url是爬虫最先开始爬取的url列表
start_requests()方法返回一个可迭代对象,包含了爬取到的第一个Request。当spider启动爬取并且未制定URL时,该方法被调用。如果指定了url(start_url),该方法会调用make_requests_from_url(url)来生成一个Request对象,。如果没有指定url,该方法也会被调用。该方法的默认实现是使用 start_url 的url生成Request。我是这么理解的。可以被重写
parse方法是当response没有指定回调函数时,scrapy处理下在的response的默认方法,该方法及其他的Request回调函数必须返回一个包含 Request 及(或) Item 的可迭代的对象。
log(),closed()功能和名字一样。
CrawlSpider类继承自Spider类,提供了一个新的属性rules,也提供了要给可复写的方法
rule是一个包含一个或者多个Rule对象的集合
parse_start_url(response)当start_url请求返回,该方法被调用,分析最初的返回值并返回一个Item对象或者一个Reqeust对象或者包含二者的可迭代对象
link_extractor是一个Link Extractor对象。定义了如何冲爬取的页面提取链接。
callback从link_extractor中每获取到链接时将会调用该函数,接受一个response作为第一个参数,并返回一个Item或者Request或者包含二者的列表
cb_kwargs
包含传递给回调函数的参数(keyword argument)的字典。
follow
是一个布尔(boolean)值,指定了根据该规则从response提取的链接是否需要跟进。 如果 callback
为None, follow
默认设置为 True
,否则默认为 False
。
process_links
是一个callable或string(该spider中同名的函数将会被调用)。 从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。
process_request
是一个callable或string(该spider中同名的函数将会被调用)。 该规则提取到每个request时都会调用该函数。该函数必须返回一个request或者None。 (用来过滤request)
XMLFeedSpider, CSVFeedSpider,SitemapSpider感觉不常用,先略过
scrapy学习记录的更多相关文章
- Scrapy学习篇(十)之下载器中间件(Downloader Middleware)
下载器中间件是介于Scrapy的request/response处理的钩子框架,是用于全局修改Scrapy request和response的一个轻量.底层的系统. 激活Downloader Midd ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录11-设计和UI
UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...
- UWP学习记录10-设计和UI之控件和模式7
UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...
- UWP学习记录9-设计和UI之控件和模式6
UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...
- UWP学习记录8-设计和UI之控件和模式5
UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...
随机推荐
- LeetCode Expression Add Operators
原题链接在这里:https://leetcode.com/problems/expression-add-operators/ 题目: Given a string that contains onl ...
- MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- Java遇见HTML——JSP篇之JavaWeb简介
一.什么是WEB应用程序 Web应用程序是一种可以通过Web(互联网)访问的应用程序.Web应用程序的一个最大好处是用户很容易访问应用程序.用户只需要有浏览器即可,不需要再安装其他软件. 为什么要学习 ...
- 第十二篇 Integration Services:高级日志记录
本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...
- Vue.2.0.5-混合
基础 混合是一种灵活的分布式复用 Vue 组件的方式.混合对象可以包含任意组件选项.以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项. 例子: // 定义一个混合对象 var myMi ...
- 四种DLL:NON-MFC DLL, Regular DLL Statically/Dynamically Linked to MFC, MFC Extension DLL
参考资料: https://msdn.microsoft.com/en-us/library/30c674tx.aspx http://www.cnblogs.com/qrlozte/p/484442 ...
- 转:CDC,CPaintDC,CClientDC,CWindowDC区别
http://www.cnblogs.com/songsu/articles/1350014.html
- nsstring基本数据类型的包装类
// // main.m // 10-基本数据类型的包装类 // // Created by apple on 14-3-20. // Copyright (c) 2014年 apple. A ...
- iOS 隐藏系统的导航,使用自定义的导航
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- Ajax.ActionLink()方法的使用
第一句话都会这么去写:程序猿就是苦逼,除了开发还要会写博文!哎,今天就和大家一起讨论下Ajax的辅助方法ActionLink的使用,如果有讲的不好的地方或错的地方,请大家务必扔板砖,要投准哦,砸死我算 ...