四步带你入门爬虫,手把手教学电影数据爬取

本文内容是通过Pycharm来进行实操

一、搭建虚拟环境

  • 创建项目的虚拟环境,目的是为了不让其他的环境资源干扰到当前的项目

  • 二、创建项目

    本文将以豆瓣作为手把手学习参考,网址:https://movie.douban.com/top250,1. 进入Terminal终端,安装我们需要的scrapy模块

    pip install scrapy

    2. 通过pycharm进入Terminal终端,输入我们接下来打算创建的项目,以myspider为例

  • 创建完之后会生成对象的目录myspider

  • 创建我们想要爬取的蜘蛛名–可以理解为想要爬取的数据来源名字,比如本文是豆瓣

  • #Termianl终端输入
    #先进入我们的项目目录
    cd myspider
    #创建蜘蛛,scrapy genspider +<爬虫名字> + <允许爬取的域名>
    scrapy genspider douban movie.douban.com

    三、编写爬虫案例

    当我们创建完我们的蜘蛛名后,会在spiders里面生成对应的文件名douban.py

    如上图,我们的spider子类scrapy.Spider定义了一些属性和方法

  • name:标识蜘蛛,在一个项目中必须是唯一的

  • allowed_domains:允许爬取的范围

  • start_urls:必须返回请求的可迭代(请求列表或者编写生成器函数),我们的爬行器将从该请求开始爬行。后续请求将从这些初始请求中相继生成。

  • parse():用来编写数据提取,会解析响应,将抓取的数据提取为字典

  • 第一步:确定我们想要爬取的数据信息

  • 在items文件中编写我们想要爬取的字段

  • import scrapy   
    class MyspiderItem(scrapy.Item):     
    # define the fields for your item here like:     
    # name = scrapy.Field()     
        title = scrapy.Field()  # 标题
        rating = scrapy.Field()  # 评估     
        quote = scrapy.Field()  # 概述     
        #brief_introduction = scrapy.Field() #剧情简介

    第二步:打开settings设置一些相关配置信息

  • ROBOTSTXT_OBEY

  • ROBOTSTXT_OBEY = False

    设置为False

  • DEFAULT_REQUEST_HEADERS

  • 模拟网页登陆的请求头信息

    DEFAULT_REQUEST_HEADERS = {     
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 
    }
  • 设置日志输出信息

  • LOG_LEVEL = 'WARNING' # 设置日志显示的等级为WARNING 
    LOG_FILE = './log.txt' # 将日志信息全部记录到log.txt文件中

    第三步:编写douban.py,实现爬虫

     

    编写douban.py文件

    import scrapy
    
    # 自定义spider,继承scrapy.spider
    class DoubanSpider(scrapy.Spider):
        # 爬虫名字
        name = "douban"
        # 允许爬取的范围,防止爬虫爬到别的网站
        allowed_domains = ["movie.douban.com"]
        #开始爬取的url地址
        start_urls = ["https://movie.douban.com/top250"]
    
        def parse(self, response):
            # scrapy的response对象可以直接进行xpath
            li_list = response.xpath('//div[@id="content"]//ol/li')
            for li in li_list:
                #创建一个数据字典,用来存储信息
                item = {}
                item["title"] = li.xpath(".//div[@class='hd']/a/span[1]/text()").extract_first()
                item['rating'] = li.xpath('.//div[@class="bd"]/div/span[2]/text()').extract_first()
                item['quote'] = li.xpath('.//div[@class="bd"]//p[@class="quote"]/span/text()').extract_first()
    
                print(item)

    第四步:运行爬虫器

    #运行name对应的名字
    scrapy crawl douban

     

    物联沃分享整理
    物联沃-IOTWORD物联网 » 四步带你入门爬虫,手把手教学电影数据爬取

    发表回复