如何從頁面獲取所有IMDB ID?例如,我想從here獲取所有ID。在該頁面,網址的格式爲:通過preg_match_all獲取頁面url中的所有imdb id
http://www.imdb.com/title/tt0948470/
我需要使用preg_match_all()
頁的所有ID - 可以在任何幫助我嗎?
如何從頁面獲取所有IMDB ID?例如,我想從here獲取所有ID。在該頁面,網址的格式爲:通過preg_match_all獲取頁面url中的所有imdb id
http://www.imdb.com/title/tt0948470/
我需要使用preg_match_all()
頁的所有ID - 可以在任何幫助我嗎?
好吧,我給煮熟了的代碼,但我也解釋:
<a>
href
屬性例/ Demo
// initialize
$ids = array();
$url = 'http://www.imdb.com/movies-coming-soon/'; # this URL
$expr = '//a/@href'; # these attributes
$regex = '(/title/(tt\d{5,7})/)u'; # matching this regex
$match = 1; # take group 1
// process
foreach((new DOMXpath(@DOMDocument::loadHTMLFile($url)))->query($expr) as $obj)
preg_match($regex, $obj->value, $matches)
&& $ids[$matches[$match]] = 0;
;
$ids = array_keys($ids);
// output
print_r($ids);
(注:您標記這個問題PHP5,電流穩定PHP5是5.4,所以是這樣的例子,如果你使用curl包裝配置PHP5的版本,這代碼是curl
)
編輯:下PHP版本:
...
// process
$xp = new DOMXpath(@DOMDocument::loadHTMLFile($url));
foreach($xp->query($expr) as $obj)
...
編輯2:只看到IMDB標記它是標記,因此可以檢索該列表的實際影片條目,而不是該頁面上的任何標題鏈接。
這需要對所使用的xpath表達式進行一些改進。因爲解析現在更加智能,重複不存在,所以沒有必要將其刪除:
// initialize
$ids = array();
$url = 'http://www.imdb.com/movies-coming-soon/'; # this URL
$expr = '//*[@itemtype="http://schema.org/Movie"]
//a[@itemprop="url"]/@href'; # these attributes
$regex = '(/title/(tt\d{5,7})/)u'; # matching this regex
$match = 1; # take group 1
// process
$xp = new DOMXpath(@DOMDocument::loadHTMLFile($url));
foreach($xp->query($expr) as $obj)
preg_match($regex, $obj->value, $matches)
&& $ids[] = $matches[$match];
;
解析錯誤:語法錯誤,意外T_OBJECT_OPERATOR在線12 我認爲我的php版本不受支持 –
@M索娜:你有哪一個?無論如何,做了一個編輯,應該這樣做,除非你使用我懷疑的一些非常古老的PHP版本。 – hakre
你好,現在工作謝謝 我的php版本是5.3.13 –
好吧,我沒有給出一個熟化的代碼。在Firefox中的「查看源的選擇」的一個簡單的功能讓我看看,每個環節都有的href屬性的格式:
href="/title/tt1615065/"
現在應當是微不足道建立一個正則表達式。我建議你一個好的RegEx tutorial和一個非貪婪的比賽將完成這項工作。祝你好運!
請把更多的精力投入到格式化您的問題 - 使用降價,使其儘可能地易讀和使用如果可以的話,可以使用英文拼寫檢查程序(在Firefox中,這是標準提供的編輯框)。 – halfer