美文网首页
Scrapy入门简介及Demo

Scrapy入门简介及Demo

作者: 云恒子 | 来源:发表于2018-09-07 10:49 被阅读99次

Scrapy简介

一个快速、高层次的屏幕抓取和web抓取的Python框架,用于抓取web站点并从页面中提取结构化的数据,可以用于数据挖掘、监测和自动化测试,可根据具体需求个性化定制。
Scrapy架构图:

image

各组件功能如下:

  • Scrapy Engine(引擎):用来处理整个系统的数据传递,是整个系统的核心部分。
  • Scheduler(调度器):用来接受引擎发过来的Request请求, 压入队列中, 并在引擎再次请求的时候返回。
  • Downloader(下载器):用于引擎发过来的Request请求对应的网页内容, 并将获取到的Responses返回给Spider。
  • Spiders(爬虫):对Responses进行处理,从中获取所需的字段(即Item),也可以从Responses获取所需的链接,让Scrapy继续爬取。
  • Item Pipeline(管道):负责处理Spider中获取的实体,对数据进行清洗,保存所需的数据。
  • Downloader Middlewares(下载器中间件):主要用于处理Scrapy引擎与下载器之间的请求及响应。
  • Spider Middlewares(爬虫中间件):主要用于处理Spider的Responses和Requests。

爬取豆瓣电影排行榜Demo

scrapy环境搭建请自行搜索教程

创建工程结构

cmd中依次执行:

scrapy startproject doubanmovie
cd doubanmovie
scrapy genspider movie duoban.com

结构如下:


image
编写程序

修改setting.py文件
找到USER_AGENT字段,取消注释并修改为:

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'

找到下面的代码取消注释

ITEM_PIPELINES = {
   'doubanmovie.pipelines.DoubanmoviePipeline': 300,
}

编写Item.py

import scrapy
class DoubanmovieItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    name = scrapy.Field()  # 电影名称
    url = scrapy.Field()  # 电影详情主页
    rating = scrapy.Field()  # 电影评分

编写movie.py

# -*- coding: utf-8 -*-
import scrapy
from doubanmovie.items import DoubanmovieItem
class MovieSpider(scrapy.Spider):
    name = 'movie'
    allowed_domains = ['douban.com']
    start_urls = ['https://movie.douban.com/chart']

    def parse(self, response):
        movies = response.xpath('//tr[@class="item"]')
        for movie_item in movies:
            item = DoubanmovieItem()
            item['name'] = movie_item.xpath('.//a[@class="nbg"]/img/@alt').extract_first()
            item['url'] = movie_item.xpath('.//a/@href').extract_first()
            item['rating'] = movie_item.xpath('.//span[@class="rating_nums"]/text()').extract_first()
            yield item

编写pipelines.py

class DoubanmoviePipeline(object):
    def process_item(self, item, spider):
        str = item['name'] + '\t' + item['url'] + '\t' + item['rating']
        print(str)  # 这里只做简单的输出,也可将其存入文件或者数据库等
运行

在打开的cmd中执行

scrapy crawl movie --nolog

结果如下:

image

版权声明:未经许可,禁止转载

相关文章

  • Scrapy入门简介及Demo

    Scrapy简介 一个快速、高层次的屏幕抓取和web抓取的Python框架,用于抓取web站点并从页面中提取结构化...

  • scrapy及scrapy-redis简介

    scrapy 及 scrapy-redis 简介 演讲目录 一、简介 1、scrapy简介 Scrapy是一个快速...

  • 教程

    一 入门系列 1. Scrapy爬虫入门教程二 官方提供Demo https://www.jianshu.com/...

  • Scrapy框架总结(1)

    @TOC Scrapy简介 较为流行的python爬虫框架。本文着重将记录本人入门Scrapy时的所有精炼总结(除...

  • SpringBoot 入门篇(一) Hello World

    一、SpringBoot简介 二、跟着官方文档学习SpringBoot   1、SpringBoot入门Demo ...

  • Scrapy 简介及初探

    转载自公众号:PythonCoder 前言 为什么要学 scrapy 呢?看下图中的招聘要求,就清楚了。很多招聘要...

  • python网络爬虫笔记三

    一、Scrapy爬虫框架常用命令 二、scrapy使用 scrapy startproject demo 新建...

  • scrapy笔记

    1 scrapy的运行原理 参考:Learning Scrapy笔记(三)- Scrapy基础Scrapy爬虫入门...

  • Scrapy入门案例

    Scrapy入门案例 Scrapy教程: 官方 《Scrapy 1.5 documentation》 中文 《S...

  • Scrapy安装和入门Demo开发

    1,Scrapy安装 windows上,可以试用pycharm安装,但是,无法通过cmd执行scrapy命令。于是...

网友评论

      本文标题:Scrapy入门简介及Demo

      本文链接:https://www.haomeiwen.com/subject/jknqgftx.html