Heim  >  Artikel  >  Backend-Entwicklung  >  curl - php 各种方法获取微信图文页面图片不显示

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

WBOY
WBOYOriginal
2016-08-04 09:21:171767Durchsuche

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=""    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>

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

<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>

咋么办??

回复内容:

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=""    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>

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

<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>

咋么办??

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

修改curl header参数 试试

https://segmentfault.com/q/1010000005046169

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn