scrapy爬虫简介及demo

Scrapy框架

创建项目

  • scrapy startproject testspider
  • 创建了很多文件和文件夹
  • 爬虫文件在spider文件夹下

通信原理

  1. 爬虫程序发请求给引擎

  2. url从引擎到调度器,进入队列,处理url

  3. 把url给下载器,下载器进入网站发请求,得到html源码

  4. html源码交给爬虫程序做解析

  5. 数据交给管道文件做数据处理,并存入数据库

  6. 如果做多重爬虫,可以再次提交url,即数据发给管道文件,url由爬虫程序处理

组件

  • 引擎Engine:中间环节,所有的操作都是通过引擎传递完成的
  • 调度器Scheduler:接收从引擎发来的url,入队列
  • 下载器Downloader:下载网页源码,返回(通过引擎)给爬虫程序
  • 项目管道Item Pipeline:做数据处理
  • 下载器中间件Downloader Middlewaeres:在引擎和下载器之间,传输数据
  • 蜘蛛中间件Spider Middlerwares:在爬虫程序和引擎之间,传输数据
  • Item:定义爬取结果的数据结构,爬取的数据会被赋值为iterm对象。

爬取流程(可能会有循环嵌套)

  1. 爬虫发url给引擎,引擎给调度器
  2. 调度器,入队列
  3. 从队列中拿出url,交给引擎
  4. 引擎把url给下载器
  5. 返回response
  6. 爬虫程序处理response
  7. 数据交给管道文件,管道文件处理

开启爬虫步骤

  1. 新建项目
    scrapy startproject testspider
  2. 明确目标(items.py中明确要爬什么)
  3. 写爬虫程序
  4. 处理数据
  5. 配置setting.py

项目配置

  • 修改ROBOTSTXT_OBEY一般修改为False
  • CONCURRENT_REQUESTS最大并发量,默认是16个
  • DEFAULT_REQUEST_HEADERS 可以设置请求头,如User-Agent等的设置
  • DOWNLOAD_DELAY设置下载延迟时间
  • 修改蜘蛛?中间件和下载器中间件

DEMO

  • scrapy startproject baidu
  1. 修改item.py
  2. 创建爬虫文件 scrapy genspider baiduspider baidu.com,把这个放到spider目录下才可以
  3. 编辑baiduspider.py
# -*- coding: utf-8 -*-
import scrapy


class BaiduspiderSpider(scrapy.Spider):
    name = 'baiduspider'
    allowed_domains = ['baidu.com']
    # 第一个爬取的url,下载器第一个下载这个页面
    start_urls = ['http://baidu.com/']

    def parse(self, response):
        print(response.text)
  1. 修改robots协议和headers
  2. 记住上面代码的name的值,cd到spider目录下scraty crawl baiduspider
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值