首頁  >  文章  >  後端開發  >  curl - php 各種方法取得微信圖文頁面圖片不顯示

curl - php 各種方法取得微信圖文頁面圖片不顯示

WBOY
WBOY原創
2016-08-04 09:21:171818瀏覽

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&amp;wxfrom=5&amp;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&amp;wxfrom=5&amp;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

感覺你的問題跟這個有點像,你試試看

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn