file_get_contents
curl
PHP Simple HTML DOM解析器
三種方法取得html,圖片都不會顯示,curl也模擬了瀏覽器。
以下圖文頁連結為例
微信圖頁
例如以html dom方式取得程式碼:
<code>$html = new simple_html_dom(); $html->load_file($artical_url); echo "$html";</code>
php取得程式碼後,第一張圖片的程式碼:
<code><img data-type="gif" data-ratio="0.29676258992805754" data-w="" width="100%" data-src="http://mmbiz.qpic.cn/mmbiz/zynprs47B4SSmGjHh9gJq59bct0TbDmksGMe4kRiaFTspugicmSwLVVfK13HdQbKIR7gaxxwF6icEVT3tCp33IOtg/0?wx_fmt=gif" style="margin: 0px; padding: 0px; width: 670px; height: auto !important; box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important;"/></code>
瀏覽器存取頁面正常顯示圖片的代碼:
<code><img data-type="gif" data-ratio="0.29676258992805754" data-w="" width="100%" data-src="http://mmbiz.qpic.cn/mmbiz/zynprs47B4SSmGjHh9gJq59bct0TbDmksGMe4kRiaFTspugicmSwLVVfK13HdQbKIR7gaxxwF6icEVT3tCp33IOtg/0?wx_fmt=gif" style="width: 670px !important; box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; height: auto !important;" _width="670px" src="http://mmbiz.qpic.cn/mmbiz/zynprs47B4SSmGjHh9gJq59bct0TbDmksGMe4kRiaFTspugicmSwLVVfK13HdQbKIR7gaxxwF6icEVT3tCp33IOtg/0?wx_fmt=gif&wxfrom=5&wx_lazy=1"></code>
咋麼辦? ?
file_get_contents
curl
PHP Simple HTML DOM解析器
三種方法取得html,圖片都不會顯示,curl也模擬了瀏覽器。
以下圖文頁連結為例
微信圖頁
例如以html dom方式取得程式碼:
<code>$html = new simple_html_dom(); $html->load_file($artical_url); echo "$html";</code>
php取得程式碼後,第一張圖片的程式碼:
<code><img data-type="gif" data-ratio="0.29676258992805754" data-w="" width="100%" data-src="http://mmbiz.qpic.cn/mmbiz/zynprs47B4SSmGjHh9gJq59bct0TbDmksGMe4kRiaFTspugicmSwLVVfK13HdQbKIR7gaxxwF6icEVT3tCp33IOtg/0?wx_fmt=gif" style="margin: 0px; padding: 0px; width: 670px; height: auto !important; box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important;"/></code>
瀏覽器存取頁面正常顯示圖片的代碼:
<code><img data-type="gif" data-ratio="0.29676258992805754" data-w="" width="100%" data-src="http://mmbiz.qpic.cn/mmbiz/zynprs47B4SSmGjHh9gJq59bct0TbDmksGMe4kRiaFTspugicmSwLVVfK13HdQbKIR7gaxxwF6icEVT3tCp33IOtg/0?wx_fmt=gif" style="width: 670px !important; box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; height: auto !important;" _width="670px" src="http://mmbiz.qpic.cn/mmbiz/zynprs47B4SSmGjHh9gJq59bct0TbDmksGMe4kRiaFTspugicmSwLVVfK13HdQbKIR7gaxxwF6icEVT3tCp33IOtg/0?wx_fmt=gif&wxfrom=5&wx_lazy=1"></code>
咋麼辦? ?
感謝樓上的回答,應該不是防盜鏈的問題,感覺是抓取的時候dom的規則不能判斷data-src和src的屬性。後來研究了半天,發現simple_html_dom確實好東西,應該可以在抓取回來後用替換的方式。無奈因對php還不是很熟,語句老是寫不正確。後來用js土辦法曲線救國,取得php變數內容並正規替換的方式解決了問題。
另外加一句,用html_dom後,別忘了$html->clear。
修改curl header參數 試試
https://segmentfault.com/q/1010000005046169
感覺你的問題跟這個有點像,你試試看