當前位置: 華文問答 > 影視

如何使用爬蟲查詢哪些電影使用變形寬銀幕鏡頭?

2019-03-05影視

最方便的是直接用現有的數據集。

IMDb 官方釋出的有數據集:

數據集的官網連結如下,

(但是官方給出的是簡要數據集,似乎不包含題主所說的Technical Spec)。所以這裏需要從官方的數據集出發去爬所需要的條目

數據的格式是TSV

可以用excel預覽一下

A列是電影的唯一標識ID,每個電影對應唯一一個ID

C列是電影的名字

官方數據集每天更新,所以無需擔心數據中不包含新電影

也就是說在這裏官方已經提供了一個完整的id集合。

這看起來是一個非常【爬蟲友好的網站】,都不用自己抓索引,自己就把所有索引直接給出了。

回到題主所需要的 Technical Spec 欄目

開啟某個電影的Technical Spec頁面,無需登入,網址列裏面t開頭的欄位就是ID,改變ID就可以存取不同電影的Technical Spec。

所以這個爬蟲的思路非常簡單,遍歷所有ID,把每個ID下的Technical Spec 頁面裏的Camera保存下來就OK

這裏需要使用urllib來獲取網頁,然後使用re來正規表式解析網頁找到我們需要的內容。

回到網頁按下F12開啟開發者模式

檢視對應內容是如何組織標簽的:

以上面這個電影的ID為例,用正規表式來提取這幾行裏的有用資訊(正規表式是一種從字串中尋找特定特征的字串的方法,具體可以參考Python 正規表式 | 菜鳥教程):

import urllib.request as urlreq import re id_str = 'tt4154664' x = urlreq . urlopen ( "https://www.imdb.com/title/tt4154664/technical" ) content_url = x . read () . decode ( 'utf-8' ) a = re . search ( r '<td class=\"label\"> Camera </td>.*?</td>' , content_url , re . S ) res = re . sub ( '<td.*?>|</td>|<br>' , '' , a . group ()) print ( res )

程式碼中前兩行引入urllib用於網頁請求,引入re用於正規表式匹配。5-6行請求網頁,直接請求下來的網頁html是這樣的,需要從中提取有用資訊

第7行使用re尋找所需要的內容,第八行整理一下,去掉<td>|</td>|<br> 這些標簽。

得到的內容應該是題主想要的Camera內容

對於這一條成功的獲取了所需要的資訊。

接下來就是遍歷官方提供的整個大列表,收集所有電影的camera資訊,存入一個TSV或者CSV或者whatever。方便搜尋就行。

註:

根據IMDb官方條款,使用機器人批次收集資訊是違規的(來源: Conditions of Use - IMDb

Robots and Screen Scraping: You may not use data mining, robots, screen scraping, or similar data gathering and extraction tools on this site, except with our express written consent as noted below.

所以這裏不展開講如何改變user_agent,調節抓取間隔,使用代理,以及分布式抓取的方法

幾個電影相關的數據集

(IMDb的API特許非常的貴,爬蟲抓全站又違規,所以這裏列出幾個電影相關的現成數據集)

比較有名的是Kaggle裏的幾個:

IMDB 5000 Movie Dataset

IMDB Movies Dataset

IMDb官方提供的乞丐版也算上吧: - IMDb,https:// datasets.imdbws.com/

OMDb,一個提供開放API的電影數據庫 The Open Movie Database

=========

Pjer內容分類:

精選 射電 編程 科研&工具 太陽物理