用Python爬取豆瓣電影TOP250分析

      網友投稿 1381 2025-04-01

      / 01 / Scrapy


      之前了解了pyspider框架的使用,但是就它而言,只能應用于一些簡單的爬取。

      對于反爬程度高的網站,它就顯得力不從心。

      那么就輪到Scrapy上場了,目前Python中使用最廣泛的爬蟲框架。

      當然目前我學習的都是簡單爬蟲,上述內容都是道聽途說,并不是切身體會。

      Scrapy的安裝相對復雜,依賴的庫較多。

      不過通過度娘,最后我是成功安裝了的。放在C盤,如今我的C盤要爆炸。

      首先任意文件夾下命令行運行scrapy startproject doubanTop250,創建一個名為doubanTop250的文件夾。

      然后在文件夾下的py文件中改寫程序。

      進入文件夾里,命令行運行scrapy genspider douban?movie.douban.com/top250。

      最后會生成一個douban.py文件,Scrapy用它來從網頁里抓取內容,并解析抓取結果。

      最終修改程序如下。

      import?scrapy

      from?scrapy?import?Spider

      from?doubanTop250.items?import?Doubantop250Item

      class?DoubanSpider(scrapy.Spider):

      name?=?'douban'

      allowed_domains?=?['douban.com']

      start_urls?=?['https://movie.douban.com/top250/']

      def?parse(self,?response):

      lis?=?response.css('.info')

      for?li?in?lis:

      item?=?Doubantop250Item()

      #?利用CSS選擇器獲取信息

      用Python爬取豆瓣電影TOP250分析

      name?=?li.css('.hd?span::text').extract()

      title?=?''.join(name)

      info?=?li.css('p::text').extract()[1].replace('\n',?'').strip()

      score?=?li.css('.rating_num::text').extract_first()

      people?=?li.css('.star?span::text').extract()[1]

      words?=?li.css('.inq::text').extract_first()

      #?生成字典

      item['title']?=?title

      item['info']?=?info

      item['score']?=?score

      item['people']?=?people

      item['words']?=?words

      yield?item

      #?獲取下一頁鏈接,并進入下一頁

      next?=?response.css('.next?a::attr(href)').extract_first()

      if?next:

      url?=?response.urljoin(next)

      yield?scrapy.Request(url=url,?callback=self.parse)

      pass

      生成的items.py文件,是保存爬取數據的容器,代碼修改如下。

      import?scrapy

      class?Doubantop250Item(scrapy.Item):

      #?define?the?fields?for?your?item?here?like:

      #?name?=?scrapy.Field()

      title?=?scrapy.Field()

      info?=?scrapy.Field()

      score?=?scrapy.Field()

      people?=?scrapy.Field()

      words?=?scrapy.Field()

      pass

      在這個之后,還需要在settings.py文件添加用戶代理和請求延時。

      最后在douban.py所在文件夾下打開命令行,輸入scrapy crawl douban。

      命令行就會顯示獲取的結果啦!!!

      這里豆瓣的信息有Unicode編碼,我也不知為何要在一個網頁里設置兩種編碼。

      在當前文件夾命令行運行scrapy crawl douban -o douban.csv,即可輸出csv文件。

      由于在處理的時候沒有去除空格,造成有兩種編碼存在,無法通過Excel查看。

      這里就貼一個文本文檔,后續會在數據可視化里去除Unicode編碼。

      / 02 / 數據可視化

      01 電影上映年份分布

      這里可以看出豆瓣電影TOP250里,電影的上映年份,多分布于80年代以后。

      其中有好幾年是在10部及以上的。

      02 中外電影上映年份分布

      明顯感受到了國產電影和國外電影的差距,90年代還行,還能過過招。

      越往后,國產電影就基本就沒有上榜的。

      每年電影出得倒是不少,真正質量好的又能有幾部呢?

      今天剛好看到新周刊的推文「2018年10大爛片」。

      影評人周黎明:如果一部影片既沒有表達,也沒有最基本的技術水準,那應該是最徹底的爛片。

      講道理,國產爛片還真不少...

      03 中外電影評分情況

      通過上張圖,我們知道國外電影是占據了榜單的大多數。

      不過這里評分情況,倒是倍感欣慰,說明國產電影中的精品也不錯,和國外電影并沒有太大的差距。

      只是這些影片貌似有點老了...

      04 電影數TOP10

      美國遙遙領先,中國位居其中。

      在我的那篇「2018年電影分析」中,中國目前可是個電影高產國,結果呢...

      香港都比內地的多。這里不得不佩服90,00年代的香港影業,確實很強!

      05 電影評分分布

      大多分布于「8.5」到「9.2」之間。最低「8.3」,最高「9.6」。

      06 評論人數TOP10

      讓我們來看看人氣最高的有哪些影片,你又看過幾部呢?

      記得上學的時候,時間多。我根據IMDbTOP250,看了榜上大部分的電影。

      于是乎豆瓣電影這個TOP10,我也全看過了,都是一些有故事的電影。

      07 排名評分人數三維度

      總的來說,排名越靠前,評價人數越多,并且分數也越高。

      08 年份評分人數三維度

      這里就更加明顯看出榜單上電影分布情況,大部分都是80年代以后的。

      在90年代有個小高峰,不僅評價高,人氣還高。

      往后的數據就相對平穩,變化不是太大。

      09 電影類型圖

      和我之前「2018年電影分析」比較一下,發現榜單里「動作」片減少不少,其他差別不大。

      這算不算是間接說明國人更喜歡視覺上的東西呢?

      / 03 / 總結

      本次只是一個簡單的Scrapy操作,目的就是簡單了解一下它的使用。

      以后或許會更深入去學習Scrapy框架,所以慢慢等小F填坑吧!

      本文轉載自微信公眾號【java學習之道】。

      爬蟲 python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格如何自定義頁面大小(excel表格中如何設置表格大小)
      下一篇:如何在wps表格中更改字體大小顏色(wps表格字體顏色怎么改不了)
      相關文章
      亚洲成亚洲乱码一二三四区软件| 国产精品亚洲一区二区三区久久| 亚洲成人在线网站| 亚洲第一成年人网站| 亚洲乱亚洲乱妇无码| 亚洲av中文无码乱人伦在线播放| 朝桐光亚洲专区在线中文字幕| 亚洲国产综合专区电影在线| 亚洲大成色www永久网站| 国产亚洲精AA在线观看SEE | 亚洲精品无码成人| 久久精品亚洲一区二区| 国产精品亚洲专一区二区三区| 亚洲啪AV永久无码精品放毛片| 国产午夜亚洲精品| 国产精一品亚洲二区在线播放| 亚洲情综合五月天| 国产亚洲精品美女久久久| 久久亚洲国产精品一区二区| 久久精品国产亚洲综合色| 亚洲国产精品嫩草影院在线观看| 亚洲精品乱码久久久久久| 亚洲啪啪AV无码片| 亚洲伦理一区二区| 亚洲日本香蕉视频观看视频| 亚洲一本大道无码av天堂| 亚洲人成77777在线播放网站不卡| 亚洲综合精品第一页| 亚洲经典在线观看| 亚洲av片不卡无码久久| 99久久精品国产亚洲| 日韩亚洲一区二区三区| 亚洲精品综合一二三区在线| 亚洲乱码一二三四区麻豆| 亚洲天堂2017无码中文| 亚洲av午夜国产精品无码中文字| 亚洲日本久久久午夜精品| 亚洲国产aⅴ成人精品无吗| 亚洲国产一级在线观看 | 亚洲成AV人片高潮喷水| 亚洲成AV人网址|