curl - php 各种方法获取微信图文页面图片不显示

WBOY
Lepaskan: 2016-08-04 09:21:17
asal
1818 orang telah melayarinya

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>
Salin selepas log masuk
Salin selepas log masuk

php获取代码后,第一张图片的代码:

<code><img  data-type="gif" data-ratio="0.29676258992805754" data-w=""    style="max-width:90%" 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;" alt="curl - php 各种方法获取微信图文页面图片不显示" ></code>
Salin selepas log masuk
Salin selepas log masuk

浏览器访问页面正常显示图片的代码:

<code><img  data-type="gif" data-ratio="0.29676258992805754" data-w=""    style="max-width:90%" 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" alt="curl - php 各种方法获取微信图文页面图片不显示" ></code>
Salin selepas log masuk
Salin selepas log masuk

咋么办??

回复内容:

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>
Salin selepas log masuk
Salin selepas log masuk

php获取代码后,第一张图片的代码:

<code><img  data-type="gif" data-ratio="0.29676258992805754" data-w=""    style="max-width:90%" 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;" alt="curl - php 各种方法获取微信图文页面图片不显示" ></code>
Salin selepas log masuk
Salin selepas log masuk

浏览器访问页面正常显示图片的代码:

<code><img  data-type="gif" data-ratio="0.29676258992805754" data-w=""    style="max-width:90%" 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" alt="curl - php 各种方法获取微信图文页面图片不显示" ></code>
Salin selepas log masuk
Salin selepas log masuk

咋么办??

感谢楼上的回答,应该不是防盗链的问题,感觉是抓取的时候dom的规则不能判断data-src和src的属性。后来研究了半天,发现simple_html_dom确实个好东西,应该可以在抓取回来后用替换的方式。无奈因对php还不是很熟,语句老是写不正确。后来用js土办法曲线救国,取得php变量内容并正则替换的方式解决了问题。
另外加一句,用html_dom后,别忘了$html->clear。

修改curl header参数 试试

https://segmentfault.com/q/1010000005046169

感觉你的问题跟这个有点像,你试试看

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!