1. 程式人生 > >Python爬蟲入門 | 7 分類爬取豆瓣電影,解決動態載入問題

Python爬蟲入門 | 7 分類爬取豆瓣電影,解決動態載入問題


比如我們今天的案例,豆瓣電影分類頁面。根本沒有什麼翻頁,需要點選“載入更多”新的電影資訊,前面的黑科技瞬間被秒……


又比如知乎關注的人列表頁面:


我複製了其中兩個人暱稱的 xpath:

//*[@id="Popover-35130-11238-toggle"]/a
//*[@id="Popover-35130-42416-toggle"]/a

竟然需要 ID 這種噁心的東西,規律失效。

上面的標記應該是“分類”,而不是“排行榜”,更正一下。


首先要告訴你的是,這種動態載入的頁面,一般資料會在Network的 JS或者 XHR 類目裡。

我們開啟開發者工具,看這一頁的 XHR裡沒有任何檔案,然後點選載入更多按鈕,看它給我們返回什麼資訊。


咦?返回了一個新的檔案,出於好奇,我們有必要看看究竟

右鍵點選 >> Open in new tab

有的網站 返回的 JS、XHR 資訊比較多,需要你去嘗試和篩選。


這個 json 頁面看起來就很親切了,包含電影名稱、導演、評分、演員、連結等資料。最關鍵的是,我仔細看了一遍頁面後發現,這一頁的電影資訊,正好是新加載出來的所有電影的資訊。

你的網頁看 json 很亂?不要著急,那是你的chrome沒有安裝jsonview這個外掛。證號為你準備好了,子按下方的雲盤下載、安裝就好:

好了,又載入了兩次,不出意料地又加載出了兩頁 XHR 資訊,於是,滿懷期待地分別開啟它們。新載入的兩個頁面,和網頁顯示的電影資訊完全相同。


我們再來看看 XHR 載入的這幾個頁面的 url:

#第二頁
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=20

#第三頁
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=40

#第四頁
https://movie.douban.com/j/new_search_subjects?sort=T&range=0
,10&tags=&start=60

比較後就可以輕鬆發現,這些頁面的 url 是有規律的:只有最後 start= 後面的數字在變化,而且是以20為步長遞增的,20正好對應每次加載出來的電影數量。


於是我們可以輕鬆地寫出頁面迴圈來爬取:

for a in range(3):    
  url='https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start={}'.format(a*20)

  # 用 a*20 表示每個頁面按 20 的步長遞增,只示例3個頁面,你可以按需求增加。


按照前面的套路寫出程式碼,並得到結果:

import requests
import json
import time

for a in range(3):
    url_visit = 'https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start={}'.format(a*20)
    file = requests.get(url_visit).json()   #這裡跟之前的不一樣,因為返回的是 json 檔案
    time.sleep(2)

    for i in range(20):
        dict=file['data'][i]   #取出字典中 'data' 下第 [i] 部電影的資訊
        urlname=dict['url']
        title=dict['title']
        rate=dict['rate']
        cast=dict['casts']

        print('{}  {}  {}  {}\n'.format(title,rate,'  '.join(cast),urlname))

爬取的資料如下:


解釋一下程式碼中的一些細節:

file = requests.get(url).json() 

之前我們用的 .text 是需要網頁返回文字的資訊,而這裡返回的是 json檔案所以用 .json()

dict=file['data'][i] 
urlname=dict['url']

取出字典中的值,需要在方括號中指明值對應的鍵

'   '.join(cast)

因為有多名演員,這裡用了 join() 函式,在字串中間加入空格分隔。


當然,你也可以把爬下來的資訊存到本地:

對電影評分進行排序,不久得到了所有的高分電影嗎?

白白~

如果你想有專業老師授課、有系統性知識、有實時線上答疑的老師的話,可以加入我們的課程《Python爬蟲(入門+進階)》

再也沒有下節預告啦,全部課程到此結束,想學習更多爬蟲知識,請來《Python爬蟲(入門+進階)》找我們!

相關推薦

Python爬蟲入門 | 7 分類豆瓣電影解決動態載入問題

  比如我們今天的案例,豆瓣電影分類頁面。根本沒有什麼翻頁,需要點選“載入更多”新的電影資訊,前面的黑科技瞬間被秒……   又比如知乎關注的人列表頁面:   我複製了其中兩個人暱稱的 xpath: //*[@id="Popov

Python爬蟲練習三:豆瓣電影分類排行榜

    目標網址url:    https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&type=5&interval_id=100:90&action=    使用谷歌瀏覽器的檢查

python爬蟲(一)豆瓣電影Top250

提示:完整程式碼附在文末 一、需要的庫           requests:獲得網頁請求           BeautifulSoup:處理資料,獲得所需要的資料 二、爬取豆瓣電影Top250           爬取內容為:豆瓣評分前二百五位電影的名字、主演、

python爬蟲【例項】豆瓣電影評分連結並圖示()-問題如何電影圖片(解決有程式碼)

這裡只有尾巴,來分析一下確定範圍:如何爬取圖片並下載?參考:http://blog.csdn.net/chaoren666/article/details/53488083----------------------------------------------------

爬蟲入門-4-3.豆瓣電影

lose ike mlp requests one spa host alt gen 1 import requests 2 3 url = "https://movie.douban.com/cinema/nowplaying/changsha/"

團隊-張文然-需求分析-python爬蟲分類豆瓣電影信息

工具 新的 翻頁 需求 使用 html 頁面 應該 一個 首先要明白爬網頁實際上就是:找到包含我們需要的信息的網址(URL)列表通過 HTTP 協議把頁面下載回來從頁面的 HTML 中解析出需要的信息找到更多這個的 URL,回到 2 繼續其次還要明白:一個好的列表應該:包含

Python爬蟲之利用BeautifulSoup豆瓣小說(三)——將小說信息寫入文件

設置 one 行為 blog 應該 += html uil rate 1 #-*-coding:utf-8-*- 2 import urllib2 3 from bs4 import BeautifulSoup 4 5 class dbxs: 6 7

python爬蟲豆瓣電影)_動態網頁,json解釋,中文編碼

from bs4 import BeautifulSoup import requests import json import sys import codecs reload(sys) sys.setdefaultencoding( "utf-8" ) rank

python爬蟲——豆瓣電影top250資訊並載入到MongoDB資料庫中

最近在學習關於爬蟲方面的知識,因為剛開始接觸,還是萌新,所以有什麼錯誤的地方,歡迎大家指出 from multiprocessing import Pool from urllib.request import Request, urlopen import re, pymongo index

Python爬蟲入門——2. 5 鬥破蒼穹並儲存到本地TXT

        話不多說,上程式碼: #匯入requests庫 import requests #匯入 re 庫 #匯入時間模組 import time import re #定義請求頭,請求頭可以使爬蟲偽裝成瀏覽器 headers = {'User-Agent': '

爬蟲入門-4-2.豆瓣讀書圖片

div 利用 resp gif a標簽 all name code 爬蟲 一.利用lxml解析 from lxml import etree import os import requests PROXY = { ‘HTTPS‘: ‘116.209

爬蟲+詞雲:豆瓣電影top100的導演制作圖雲

ray 爬取 open tex 下載頁面 down app zhong form 前段時間做了一個關於豆瓣電影的爬蟲,之後又寫了一個陳奕迅歌詞的詞雲制作,於是我想不如做一個關於豆瓣高分電影導演的詞雲試試,於是有了接下來這篇隨筆。 首先,我需要知道豆瓣top100電影詳情頁面

【go語言爬蟲】go語言豆瓣電影top250

抓取欄位:電影名稱、評分、評價人數 二、執行: 正在抓取第0頁…… 肖申克的救贖 9.6 824764人 這個殺手不太冷 9.4 791399人 霸王別姬 9.5 589028人 阿甘正傳 9.4 678850人 美麗人生 9.5 3940

Scrapy爬蟲(4)豆瓣電影Top250圖片

  在用Python的urllib和BeautifulSoup寫過了很多爬蟲之後,本人決定嘗試著名的Python爬蟲框架——Scrapy.   本次分享將詳細講述如何利用Scrapy來下載豆瓣電影Top250, 主要解決的問題有: 如何利用ImagesPi

爬蟲專案:requests豆瓣電影TOP250存入excel中

    這次爬取是爬取250部電影的相關內容,分別用了requests請求url,正則表示式re與BeautifulSoup作為內容過濾openpyxl作為excel的操作模組,本人為才學不久的新手,程式碼編寫有點無腦和囉嗦,希望有大神能多提建議    首先,程式碼清單如下:

python爬蟲案例——根據網址中文網站獲取標題、子連線、子連線數目、連線描述、中文分詞列表

全棧工程師開發手冊 (作者:欒鵬) 其中使用到了urllib、BeautifulSoup爬蟲和結巴中文分詞的相關知識。 除錯環境python3.6 # 根據連線爬取中文網站

Python爬蟲入門 | 豆瓣電影信息

Python 編程語言 web開發這是一個適用於小白的Python爬蟲免費教學課程,只有7節,讓零基礎的你初步了解爬蟲,跟著課程內容能自己爬取資源。看著文章,打開電腦動手實踐,平均45分鐘就能學完一節,如果你願意,今天內你就可以邁入爬蟲的大門啦~好啦,正式開始我們的第二節課《爬取豆瓣電影信息》吧!啦啦哩啦啦,

python爬蟲實踐——零基礎快速入門(二)豆瓣電影

爬蟲又稱為網頁蜘蛛,是一種程式或指令碼。 但重點在於,它能夠按照一定的規則,自動獲取網頁資訊。 爬蟲的基本原理——通用框架 1.挑選種子URL; 2.講這些URL放入帶抓取的URL列隊; 3.取出帶抓取的URL,下載並存儲進已下載網頁庫中。此外,講這些URL放入帶抓取UR

[python爬蟲入門]豆瓣電影排行榜top250

要爬取內容的是豆瓣網的電影排行top250: https://movie.douban.com/top250, 將電影名和評分爬取下來並輸出, 如下圖: 使用了tkinter做了簡單頁面 然後分析如何爬取內容: 首先爬取標題: 檢視原始碼後, 發現標

7Python爬蟲——豆瓣電影Top250

利用python爬取豆瓣電影Top250的相關資訊,包括電影詳情連結,圖片連結,影片中文名,影片外國名,評分,評價數,概況,導演,主演,年份,地區,類別這12項內容,然後將爬取的資訊寫入Excel表中。基本上爬取結果還是挺好的。具體程式碼如下: #!/us