php抓取網頁特定div區塊及圖片
昨天有個朋友在問我說,php怎麼抓取網頁某個div區塊的內容。像funp推推王那樣每次推文都會顯示文章內的圖片,提供縮圖撰擇,又是怎麼做到的?其實這語法出乎意料的簡短…
1. 取得指定網頁內的所有圖片:測試
<?php //取得指定位址的內容,並儲存至text $text=file_get_contents('https://www.diimii.com/'); //取得所有img標籤,並儲存至二維陣列match preg_match_all('#<img[^>]*>#i', $text, $match); //印出match print_r($match); ?>
2. 取得指定網頁內的第一張圖片:測試
<?php //取得指定位址的內容,並儲存至text $text=file_get_contents('https://www.diimii.com/'); //取得第一個img標籤,並儲存至陣列match(regex語法與上述同義) preg_match('/<img[^>]*>/Ui', $text, $match); //印出match print_r($match); ?>
3. 取得指定網頁內的特定div區塊(藉由id判斷):測試
<?php //取得指定位址的內容,並儲存至text $text=file_get_contents('https://www.diimii.com/2009/01/seo%e5%8c%96%e7%9a%84%e9%97%9c%e9%8d%b5%e5%ad%97%e5%bb%a3%e5%91%8a%e9%80%a3%e7%b5%90/'); //去除換行及空白字元(序列化內容才需使用) //$text=str_replace(array("\\r","\\n","\\t","\\s"), '', $text); //取出div標籤且id為PostContent的內容,並儲存至陣列match preg_match('/<div[^>]*id="PostContent"[^>]*>(.*?) <\\/div>/si',$text,$match); //印出match[0] print($match[0]); ?>
4. 上述2及3的結合:測試
<?php //取得指定位址的內容,並儲存至text $text=file_get_contents('https://www.diimii.com/2009/01/seo%e5%8c%96%e7%9a%84%e9%97%9c%e9%8d%b5%e5%ad%97%e5%bb%a3%e5%91%8a%e9%80%a3%e7%b5%90/'); //取出div標籤且id為PostContent的內容,並儲存至陣列match preg_match('/<div[^>]*id="PostContent"[^>]*>(.*?) <\\/div>/si',$text,$match); //取得第一個img標籤,並儲存至陣列match2 preg_match('/<img[^>]*>/Ui', $match[0], $match2); //印出match2[0] print_r($match2[0]); ?>
後記:用正規表達式Regex來做真的很方便,但老實說我規則常會忘掉,記錄一下幾篇文章好了(Regular Expression Details | PCRE Functions | Introduction to PHP Regex | 天殺的正規表示式…)
喔喔原來是這樣啊~~~
感謝你 對我有很大幫助
等我成名我會來報答你給你錢
愛死擬了
有幫上忙就好(但你的網址和mail都亂填T_T)
請問一下!
這四個步驟中的正規表達式,
步驟二其中一開始的”/” 和結束的 “/Ui”是什意思阿?
斜線/和斜線的U和i是使用PCRE模式的修飾字,旨在取得斜線內的一個匹配字符,而不是多個,可參考這篇文章
http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
感謝~
後來我也找到這個頁面!
了解怎麼運用preg系列函式的修飾字了!
不客氣
您好!!!這幾天這問題困擾我很久.一直在嚐試中.希望版主可以幫忙解答
請問要如何從下列字串篩檢出111.222.333.444.555,666,777,888,999,000????
字串————————————–
111
222
333
444
555
666
777
888
999
000
字串————————————–
html都被吃掉了….問題在這
http://www.blueshop.com.tw/board/show.asp?subcde=BRD200907172120073MA&fumcde=FUM20041006152627A9N&rplcnt=0
TO:Neil
不好意思晚回覆了,看來已有人幫你^^
請問第一題 1. 取得指定網頁內的所有圖片 此處[^>]的意思是?? 感謝ANDY版大的回答 ^^
To: ME
/<img[^>]*>/
以<img為起始,中間所有符合不為>的所有字串,再以>做結尾
(正規式很難用中文解釋耶T_T)
請問要如何抓第二頁的資料呢?
ex 第一頁跟第二頁網址都一樣 但是都抓到第一頁的
請問要如何抓第二頁的資料呢
但是第一頁網址跟第二頁的一樣
站主請教一下
取得指定網頁內的特定div區塊(藉由id判斷)
如果該網頁圖片使用”相對路徑”的話就抓不到正確路徑
不知有何解決方法
感謝指導喔^^
Regex對img很有效 可是對div中包div這個就會有點bug
content
這樣可能讀不到content…
感覺還蠻實用的唷~~可以省去很多作業時間呢~~只是要寫出更適合自己的工作的語法就要花時間想架構囉~~QQ
請問一下這個抓取網頁的成是只能抓取div的物件嗎??
其他的可以嗎?
可以的話要怎麼寫??
請問 這個方法好像對FB沒有作用喔
還有其他方式可以抓取FB的圖片嗎?
請問在
preg_match(‘/]*id=”PostContent”[^>]*>(.*?) /si’,$text,$match);
中的那條\是什麼意思??麻煩您了 謝謝
版大你好,如果想讀取一個區域的公告該怎麼做呢?0.0