本项目是基于Scrapy框架。

Scrapy安装介绍

Scrapy的安装有多种方式,它支持Python2.7版本及以上或Python3.3版本及以上。以下说明Python3环境下最懒最简单的安装过程。

键盘Win+R键打开命令输入符(运行),输入cmd

爬虫项目(三):豆瓣TOP250电影

接着在输入pip install scrapy即可以安装scrapy框架模块

爬虫项目(三):豆瓣TOP250电影

等待一会,会出现Successful……语句。

默认安装成功之后就开始项目了。


首先要使用Scrapy抓取一个网站一共需要四个步骤:

1.创建一个Scrapy项目;

2.定义Item容器;

3.编写爬虫;

4.存储内容。


在cmd中首先要切换到桌面(cd desktop),再输入scrapy startproject movie

这时会在桌面创建好一个名为movie的文件夹

movie文件夹的目录如下

movie/

    scrapy.cfg

    movie/

        __init__.py

        items.py

        pipelines.py

        settings.py

        spiders/

            __init__.py

需要做的就是在spiders目录下再创建一个新的*.py文件,比如Moviespider.py

接着先放下这边的工作,你需要登录到豆瓣TOP250的网址:https://movie.douban.com/top250 ,页面如下:

爬虫项目(三):豆瓣TOP250电影

你想要做的就是 获取你要爬取的信息,我们可以直观的看到有电影名,电影简述,评分,还有一句格言。这就是我们需要爬取的数据。点击键盘F12或鼠标右键审查元素。

以肖申克的救赎为例:

爬虫项目(三):豆瓣TOP250电影

titile标题在div class="hd"/a/span标签中,movieInfo电影简介在div class="bd"/p标签中,star评分在div class="bd"/span class="rating_num"标签中,quote格言在div class="bd"/p class="quote"标签中,记住这些元素。


接下来定义Item容器。在item.py中:

爬虫项目(三):豆瓣TOP250电影

紧接着在Moviespider.py中编写我们的爬虫程序:

爬虫项目(三):豆瓣TOP250电影

最后在cmd命令行中首先先切换到movie的文件夹中:cd desktop/movie

再输入:scrapy crawl movie

要想存储内容为json/csv文件就输入:scrapy crawl movie -o movie.json/scrapy crawl movie -o movie.csv

也可以通过编写pipelines.py的程序进行存储。

注意:

    可能会出现几个坑:

    (1)出现了403的错误,如下:

        DEBUG:   Crawled(403)<GET http://……>(referer:None)

        原因:代理被禁止访问

        解决方法:

        在settings.py添加设置代理User-Agent:

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

    (2)出现了Forbidden by robots.txt的错误,如下:

        [scrapy]DEBUG: Forbidden by robots.txt:<GET https://……>

        原因:scrapyl是遵守robot协议的,在访问网址前会先访问robot.txt来查看自己是否有权限访问。如果网站不允许被爬,就不能访问。

        解决方法:

        ROBOTSTXT_OBEY=True 改为 ROBOTSTXT_OBEY=False

    (3)若启用了一个Item Pipeline组件,你必须将它的类添加到ITEM_PIPELINES配置中

        解决方法:

        settings.py中 ITEM_PIPELINES={

        'movie.pipelines.MoviePipeline':300,

}

            

相关文章:

  • 2022-12-23
  • 2021-09-21
  • 2021-11-11
  • 2022-01-18
  • 2021-08-11
  • 2021-11-23
  • 2021-05-17
  • 2021-07-08
猜你喜欢
  • 2021-08-21
  • 2021-06-25
  • 2022-02-07
  • 2022-01-30
  • 2021-11-18
  • 2021-12-17
相关资源
相似解决方案