Scrapy入门简介及Demo

2018-09-07  本文已影响99人  云恒子

Scrapy简介

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

image

各组件功能如下:

爬取豆瓣电影排行榜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

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

上一篇 下一篇

猜你喜欢

热点阅读