python實戰爬取豆瓣電影top250

2021-10-05 01:30:47 字數 3015 閱讀 9576

本次python實戰,主要目標是利用python爬取豆瓣電影 top 250資訊,如上圖所示。這些資訊主要包括排名、片名、評分、上映時間、主演等資訊。爬取的**url是爬取後的結果會儲存在csv檔案裡面。

主要分為三個步驟:

1.分析url

2.分析**資料

3. 爬取資料

1.分析url 豆瓣電影排行榜250的url很好分析: 格式都是這樣子的: 並且當start=0,對應的是排名1到25的電影,start=25對應的是排名25到50的電影,以此類推,我們便可以得到所有的url

…2.分析**資料

在這一步中,首先我使用了beautifulsoup將得到的response物件解析

page_bsobj=beautifulsoup(response,「lxml」)

然後我們就需要查詢豆瓣網頁源**來確定如何找到我們所需要的資料,即電影名稱.

可發現電影名稱都在span標籤中,並且該標籤還具有class屬性.於是我們便可以利用beautifulsoup的find_all()函式來找到所有具有class屬性的span標籤,同時beautifulsoup是從上到下搜尋span標籤的,因此可以不用擔心排名的問題:

movie_items=page_bsobj.find_all(「span」,)

然而在這裡我們要注意的是,有些電影有兩個span標籤,即列出了兩個title:中文翻譯名字和原作名字,而有些電影是國產電影,只列出了乙個名字,對於英文名,是在class=other標籤中列出的:

開啟網頁,右擊檢查元素,找到每個電影模組對應的序列**,如下圖:

將圖中右側滑鼠選中的位置的xpath路徑複製下來為: /html/body/div[3]/div[1]/div/div[1]/ol/li[1] 1 依次,第二個的xpath路徑為: /html/body/div[3]/div[1]/div/div[1]/ol/li[2] 1 第三個的xpath路徑為: /html/body/div[3]/div[1]/div/div[1]/ol/li[3] 1 …… 最後乙個的xpath路徑為: /html/body/div[3]/div[1]/div/div[1]/ol/li[25] 1 由此可發現,它們的xpath路徑是有規律的,即最後乙個中的數字從1開始,增加到25 接下來用語句表示出 html_etree.xpath(』/html/body/div[3]/div[1]/div/div[1]/ol/li[2]』) 1 將語句後的[數字]刪除,便可表示所有的xpath路徑 即html_etree.xpath(』/html/body/div[3]/div[1]/div/div[1]/ol/li』) 1 此時執行結果為:

len()函式檢視返回值的長度 如下圖:

25個路徑裡面,每個路徑裡面有10個電影影的名字,共250個

1.li=html_etree.xpath(』/html/body/div[3]/div[1]/div/div[1]/ol/li』)

2.for item in li:

3. name=item.xpath(』』)

item為自己命名的,可理解為電影

name理解為電影名字

整個語句可理解為,從25個xpath路徑裡面獲取得250個電影,然後再從這250個電影(item)的xpath路徑裡面獲取250個電影名(name)

現在複製兩個電影名的鏈結進行分析

第一頁的肖申克的救贖:

1./html/body/div[3]/div[1]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]

第一頁的霸王別姬:

1./html/body/div[3]/div[1]/div/div[1]/ol/li[2]/div/div[2]/div[1]/a/span[1]

可看出,兩個鏈結只有/li中的數字不一樣

**表示:

li=html_etree.xpath(』/html/body/div[3]/div[1]/div/div[1]/ol/li』)

for item in li:

.name=item.xpath(』./div/div[2]/div[1]/a/span[1]』)

li 標籤前的作為父級,後面的為子集,./ 代替父級的位置,改寫為:

1.li = html_etree.xpath(』//*[@id=「content」]/div/div[1]/ol/li』).

2.for item in li:

3.name = item.xpath(』./div/div[2]/div[1]/a/span[1]/text()』)[0]

4.print (name)

結果:1.肖申克的救贖

2. 霸王別姬

3. 阿甘正傳

4. 這個殺手不太冷

5. 美麗人生

6. 鐵達尼號

7. 千與千尋

8. 辛德勒的名單

9. 盜夢空間

10. 忠犬八公的故事

11. 海上鋼琴師

12. 三傻大鬧波里活

13. 楚門的世界

14. 機械人總動員

15. 放牛班的春天

16. 星際穿越

17. 大話西遊之大聖娶親

18. 熔爐

19. 瘋狂動物城

20. 無間道

21. 龍貓

22. 教父

23. 當幸福來敲門

24. 怦然心動

25. 觸不可及

BeautifulSoup爬取豆瓣電影Top250

任務要求 爬取豆瓣電影top250的電影名 評分 短評 評分人數等資訊 通過部落格對beautifulsoup4的簡單介紹,現在開始實戰啦,沒有看過的,可以先看看 推薦閱讀 使用xpath爬取資料 jupyter notebook使用 beautifulsoup爬取豆瓣電影top250 一篇文章帶你...

豆瓣熱門電影爬取

import requests import json import csv defgetonepagedata page start url headers params response requests.get start url,headers headers,params params i...

Python爬蟲 爬取豆瓣電影(二)

檢視上乙個專案,請看 上乙個專案中獲取到了一定數量的電影url資訊,這次來獲取單個電影的電影詳情。對傳遞的url返回乙個名為soup的beautifulsoup物件 defget url html soup url header request body.get header proxies req...