爬虫基础---Scrapy框架(I)

安装

-windows中:
    需要安装的库:wheel--lxml--twisted--pywin32--scrapy
    注意:
    1.twisted 需要通过文件路径来安装  pip install  path(安装包下载地址:http://www.lfd.uci.deu/~gohlke/pythonlibs/#twisted 找到合适自己操作系统及python的版本)
    2.其他的库都可以通过pip install xxx安装

各个组件介绍

-engine 爬虫引擎
   负责控制各个组件之间的数据流,当某些操作触发事件后都通过engine来处理

-scheduler 调度器
   用来接受来自engine的请求,并将请求放入队列中,并通过事件返回给engine

-downloader
   通过engine请求下载网络数据并将结果响应给engine

-spider
  spider发出请求,并处理engine返回给它下载器响应数据,以items和规则内的数据请求url返回给engine items以新的请求集

创建Scrapy 项目

1.scrapy startproject project_name #创建一个爬虫项目
2.cd project_name   #进入项目目录
3.srapy genspider 爬虫名  爬虫域名   #建立爬虫

scrapy startproject myspider
scrapy genspider baiduspider  www.baidu.com

注意:
    一个完整的爬虫需要4步
        -新建目标 scrapy startproject
        -明确目标  编写items.py #定制要抓取的字段
        -制作爬虫  spiders
        -存储内容  pipelines.py

spider项目结构

-spiders文件夹  
    -spiders目录,负责存放继承scrapy的爬虫类
    -items.py 负责数据模型的建立,类似于实体类
    -middlewares.py 自定义的中间件
    -pipelines.py 负责对spider返回数据的处理
    -settings.py负责对整个爬虫的配置
-scrapy.cfg 项目的配置文件

scrapy的命令行命令

1.全局命令(表示可以在任何地方使用)

  startproject #创建爬虫项目
  genspider   #用于生成爬虫一共有四种模板
  basic(默认) crawl csvfeed xmlfeed
      -具体的用法
          scrapy genspider  爬虫名  爬去的网站域名
      -可以指定模板
         scrapy genspider -t 模板名

  settings  #scrapy settings -h 可以获取这个命令的所有帮助信息

  runspider  #scrapy runspider爬虫文件名称(这里的爬虫文件都是在项目目录下的spiders文件夹中)

  shell  #scrapy shell url地址 进入交互模式

  fetch  #scrapy fetch url地址 该命令会将网页document内容下载,并在浏览器显示 
      -参数
          --nolog 不打印日志
          --headers打印响应头信息
          --no-rediret 不做跳转

  view  #scrapy view url地址 
  该命令会通过scrapy 将网页的源代码下载下来并显示(因为现在很多网站的数据都是通过ajax请求来加载的,这个时候直接通过requests请求无法获取我们想要的数据,这个时候view命令可以帮助我们很好的判断)

  version #scrapy version -v 查看版本信息

2.项目命令(只能在项目目录下使用)

    crawl  #启动spider爬虫   scrapy crawl 爬虫名

    check  #用于检查代码是否有错误 scrapy check

    list  #列出所有可用的爬虫   scrapy list
    edit
    parse
    bench

scrapy框架中选择器(提取数据的机制)

–xpath是专门在xml文件中选择节点的语言,也可以用在HTML上
–css是一门将HTML文档样式化,选择器有由它定义,并与特定的HTML元素的样式相关连

1.xpath选择器

nodeName 选择节点的所有节点
/       从根节点选取
//  从匹配选择的当前节点选择文档中的节点,不考虑它们的位置
.       选择当前节点
..      选择当前节点的父节点
@       选择属性
*       匹配任何元素的节点
@*      匹配任何属性节点
Node()  匹配任何类型的节点

2.css选择器

extract_first() #获取标签的文本内容,直接返回第一个值
extract_first(default='xx') 可以设置默认参数,若匹配不到则返回 xx
extract() #获取标签的文本内容,返回一个列表

contains()

spiders用法

1.spider类

–定义如何爬取某个网站;包括了爬取的动作(是否跟进链接)以及如何从网页中提取结构化数据(爬取item)

2.工作流程分析
1.以初始的URL初始化Request,并设置回调函数,当该request下载完毕并返回时,将生成response,并作为参数传给回调函数。spider中初始的request是通过start_requests()来获取的。start_requests()获取start_urls的URL,并用parse回调函数生成Request
2.在回调函数内分析返回的网页内容,可以返回Item对象,或Dict,或者Request,以及是一个包含三者的可迭代的容易,返回的Request对象之后会经过Scrapy处理,下载相应的内容,并调用设置的callback函数
3.在回调函数内,可以通过lxml,bs4,xpath,css等方法获取我们想要的内容生成item
4.最后将item传递给Pipeline处理

--注意:
        创建一个Sipder,必须继承scrapy.Spider类,且定义三个属性:
        name,start_urls, parse()

3.常用属性

-name 
定义爬虫的名字(必须是唯一的),通过命令启动的时候就是这个名字

-start_urls 
包含了Spider在启动时进行爬取得url列表。因此,第一个被获取到得页面将是其中之一。后续的url则从初始的URL获取到的数据中提取

-parse(response) 
是spider的一个方法。被调用时,每个初始URL完成下载后生成Response对象将会作为唯一的参数传递给该函数。该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象 

-allowed_domains 
包含spider允许爬取的域名列表。当offsiteMiddleware启用时,域名不在类别中URL不会被访问。因此在爬虫文件中,每次生成Request请求时都会济宁和这里的域名进行判断
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值