美文网首页scrapy
scrapy (手把手)创建项目 从零开始做第一个爬虫 实战

scrapy (手把手)创建项目 从零开始做第一个爬虫 实战

作者: 朱允见 | 来源:发表于2018-04-08 13:56 被阅读0次

    从零开始做第一个scrapy 框架爬虫

    • 首先确保自己的电脑已经安装好scrapy,如果还没有安装好请自行百度一下,很简单。

    1.项目创建

    • 创建项目 :scrapy startproject Demo


      创建项目结果 .png
    • 创建 spider,首先进入Demo文件夹

    • scrapy genspider demo 'www.itcast.cn'

      创建 spider.png
    • 项目创建完成后的结构目录是这样的


      项目文件结构.png

    2.编写scrapy 爬虫项目

    2.1 编写items.py
    • 这里是我们想要采集的数据字段
    import scrapy
    
    class DemoItem(scrapy.Item):
        # define the fields for your item here like:
        name = scrapy.Field()
        grade = scrapy.Field()
        info = scrapy.Field()
        img = scrapy.Field()
    
    2.2 spiders下的 demo.py 文件
    • 这里是我们写爬虫的主要实现逻辑
    # -*- coding: utf-8 -*-
    import scrapy
    
    import re
    from Demo.items import DemoItem
    
    class ItcastSpider(scrapy.Spider):
        name = 'demo'
        #允许域,可以是多个
        allowed_domains = ['http://www.itcast.cn']
        
        #scrapy 开始发起请求的地址
        start_urls = ['http://www.itcast.cn/channel/teacher.shtml']
    
        def parse(self, response):
    
            html = response.text
            reg =r'<img data-original="(.*?)">.*?<div class="li_txt">.*?<h3>(.*?)</h3>.*?<h4>(.*?)</h4>.*?<p>(.*?)</p>'
            infos = re.findall(reg,html,re.S)
    
            for img,name,grade,talk in infos:
                item = DemoItem()
                item['name'] = name
                item['grade'] = grade
                item['info'] = talk
                item['img'] = self.allowed_domains[0] + img
                #这里是用的yield 而不是return
                yield item
    
    2.3 编写pipelines.py文件
    • 这里是管道文件,就是我们采集到的数据通过yield信号,传递到这里,进行后续操作,比如存入数据库,写文件...
    import json
    
    class DemoPipeline(object):
        #初始化的操作,这里我们做本地化直接写成文件,所以初始化文件对象
        def __init__(self):
            print('实例化DemoPipeline')
            self.f = open('itcast_pipeline.json','w',encoding='utf-8')
    
        def process_item(self, item, spider):
            content = json.dumps(dict(item))
            self.f.write(content)
            print(content)
            return item
        #结束后做的操作,在这里我们要关闭文件
        def close_spider(self,spider):
            print('结束')
            self.f.close()
    
    2.4 打开settings.py 文件更改配置
    • 启用管道文件


      settings.py 文件配置.png

    3.运行项目

    • 到这里,恭喜你已经写完了第一个scrapy 分布式爬虫的项目,是不是so easy !

    • scrapy crawl demo 执行程序
      这里的demo 是 下图中的


      image.png

    结束

    • 总结一下scrapy 项目没什么,记住四步走
      第一步:编写items.py
      第二步:编写spiders下的 demo.py 文件
      第三步:编写pipelines.py文件
      第四步:打开settings.py 文件更改配置

    相关文章

      网友评论

        本文标题:scrapy (手把手)创建项目 从零开始做第一个爬虫 实战

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