Scrapy安装:(scrapy依赖包过多推荐使用下面的方法)

先安装Anaconda,然后 运行conda install Scrapy

创建scrapy项目:

1,scrapy startproject 项目名
2,cd到项目名下
3,scrapy genspider 爬虫名 www.baidu.com(网站网址)
4,在项目根目录下新建run.py

from scrapy.cmdline import execute
execute(['scrapy','crawl','quotes'])

这种方法直接运行该脚本即可,不需要每次输入命令!

scrapy选择器用法

response.css('.text::text').extract()
这里为提取所有带有class=’text’ 这个属性的元素里面的text返回的是一个列表
response.css('.text::text').extract_first()
这是取第一条,返回的是str
response.css("div span::attr(href)").extract()
这里取的是该属性值

同样可以用xpath选择器:

response.xpath("//a[@class='tag']/text()").extract())

scrapy保存文件的方法

scrapy crawl quotes -o quotes.json   #  保存为json形式
scrapy crawl quotes -o quotes.jl #json lines存储
scrapy crawl quotes -o quotes.csv
scrapy crawl quotes -o quotes.xml
scrapy crawl quotes -o quotes.pickle #数据分析用
scrapy crawl quotes -o quotes.marshal #数据分析用
scrapy crawl quotes -o ftp://user:pass@ftp.example.com/path/to/quotes.csv #远程保存

scrapy的spider的用法

spider是最简单的spider,每个其他的spider都必须继承该类,spider并没有提供什么特殊的功能,其仅仅请求给定的start_urls/start_requests,并根据返回的结果调用spider的parse方法

name,
定义spider的名字的字符串,必须是唯一的,name是spider的最重要的属性,而且是必须的
allowed_domains
可选,包含spider允许爬取的域名的列表,当offsiterMiddleware启用时,域名不在列表的url不会被跟进
start_urls 
url列表,spider从该列表中开始进行爬取。 
start_requests
该方必须返回一个可迭代的对象,对象中包含了spider用于爬取的第一个request.

def start_requests(self):
yield scrapy.Request(url=,self.menu,method='post')

scrapyde settings的用法

  1. DOWNLOAD_DELAY = 2-----------设置爬取间隔
  2. DEFAULT_REQUEST_HEADERS-----------设置头信息
  3. ROBOTSTXT_OBEY = True-----------如果启用,Scrapy将会采用 robots.txt策略
  4. AUTOTHROTTLE_START_DELAY = 5----------开始下载时限速并延迟时间
  5. AUTOTHROTTLE_MAX_DELAY = 60------------高并发请求时最大延迟时间
  6. CONCURRENT_REQUESTS = 16-----------开启线程数量,默认16

递归调用本函数爬取

next_page = response.css('.next::attr(href)').extract_first()
self.page += 1 (先设置类变量)
if self.page <= 3: #控制递归深度
yield scrapy.Request(url=next_page,callback=self.parse)

meta是一个字典,主要是用解析函数之间传递值

# 上一个函数 yield scrapy.Request(title_urls,self.get_pics,meta={'title_name':title_name})
# 下一个函数 s = response.meta['title_name']

爬虫的暂停与重启

scrapy crawl 爬虫名称 -s JOBDIR=保存记录信息的路径
  如:scrapy crawl cnblogs -s JOBDIR=zant/001 
  执行命令会启动指定爬虫,并且记录状态到指定目录

爬虫已经启动,我们可以按键盘上的ctrl+c停止爬虫,停止后我们看一下记录文件夹,会多出3个文件,其中的requests.queue文件夹里的p0文件就是URL记录文件,这个文件存在就说明还有未完成的URL,当所有URL完成后会自动删除此文件

当我们重新执行命令:scrapy crawl cnblogs -s JOBDIR=zant/001  时爬虫会

scrapy操作指南的更多相关文章

  1. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  2. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  3. scrapy 知乎用户信息爬虫

    zhihu_spider 此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧.代码地 ...

  4. 【项目管理】GitHub使用操作指南

    GitHub使用操作指南 作者:白宁超 2016年10月5日18:51:03> 摘要:GitHub的是版本控制和协作代码托管平台,它可以让你和其他人的项目从任何地方合作.相对于CVS和SVN的联 ...

  5. ubuntu 下安装scrapy

    1.把Scrapy签名的GPG密钥添加到APT的钥匙环中: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 6272 ...

  6. 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务

      上周学习了BeautifulSoup的基础知识并用它完成了一个网络爬虫( 使用Beautiful Soup编写一个爬虫 系列随笔汇总 ), BeautifulSoup是一个非常流行的Python网 ...

  7. Scrapy:为spider指定pipeline

    当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...

  8. scrapy cookies:将cookies保存到文件以及从文件加载cookies

    我在使用scrapy模拟登录新浪微博时,想将登录成功后的cookies保存到本地,下次加载它实现直接登录,省去中间一系列的请求和POST等.关于如何从本次请求中获取并在下次请求中附带上cookies的 ...

  9. Scrapy开发指南

    一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. Scrapy基于事件驱动网络框架 Twis ...

随机推荐

  1. Android ListView多布局

    使用listview多布局会出现一点问题: 由于多个item布局给单一的item布局是不一样的,使用起来,contentview的复用会出现问题. 避免出现问题的有这几个方法: 1.重写 getVie ...

  2. java常用的正则表达式的工具类

    import com.google.common.base.Strings; import java.util.regex.Matcher;import java.util.regex.Pattern ...

  3. MongoDB in Action (MongoDB 实战).pdf

    http://www.open-open.com/doc/view/691d4d2232ce4b30b14c6b218fff4be8

  4. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在线教育视频站点介绍

    笔记 第一章项目介绍和前期准备 1.SpringBoot整合微信支付开发在线教育视频站点介绍     简介: 课程介绍,和小D课堂在线教育项目搭建开发 1.课程大纲介绍         2.微信支付项 ...

  5. c++ STL之unordered_map

    1.1 特性 关联性:通过key去检索value,而不是通过绝对地址(和顺序容器不同) 无序性:使用hash表存储,内部无序 Map : 每个值对应一个键值 键唯一性:不存在两个元素的键一样 动态内存 ...

  6. R语言与概率统计(一) 描述性统计分析

      #查看已安装的包,查看已载入的包,查看包的介绍 ########例题3.1 #向量的输入方法 w<-c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 6 ...

  7. git显示不出来图标标志

    git操作的文件夹,发现没有显示出来是否上传的绿色图标,这样导致不清楚哪些文件是否修改,是否上传. 以下方法让我的问题解决了,但我并不知道是不是所有人的问题都适用这种方法,如果你也遇到这种问题,可以尝 ...

  8. Django之logging配置

    1. settings.py文件 做开发离不开必定离不开日志, 以下是我在工作中写Django项目常用的logging配置. # 日志配置 BASE_LOG_DIR = os.path.join(BA ...

  9. Docker Windows

    docker windows 操作和linux上稍有些差异,主要是在启动容器时的命令参数 和 端口映射. 1.下载docker-toolbox http://mirrors.aliyun.com/do ...

  10. webbench接口并发测试

    webbench接口并发测试 安装     安装工程中可能会出现确实Ctags的情况,可以进行命令安装: Ubuntu:apt install ctags Centos:yum install cta ...