Heim >Backend-Entwicklung >PHP-Tutorial >ajax - php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助!

ajax - php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助!

WBOY
WBOYOriginal
2016-06-06 20:29:461233Durchsuche

我最近在学习php抓取,遇到一个问题被困扰了好长时间了,
我在抓取一个页面的信息(假设a.php),这个页面只是一些基本的html框架,其他关键信息是通过ajax请求(b.php)回来的,返回的是json,然后在通过页面js将json解析,绘制到页面上。问题的关键是ajax请求的信息里有个手机号码需要登录后才显示完整,
我尝试的方法一:模拟登录后直接抓取页面(a.php),遇到ajax不能跨域调用;
方法二:用模拟登录抓取json数据(b.php)得到(api.php)想要的手机信息仍不能完全显示,
方法三:通过替换把ajax调用的页面(b.php)替换为本地地址(api.php),仍不能显示。

请问是我抓取的方法不对还是这种数据根本没办法抓取到,再或是我的方法中关键参数不对?求大神指点!

补充:可能我没表述清楚,原网站利用ajax请求b.php获得json数据,
如果直接访问b.php也是可以直接得到:{"name":"zhangsan","age":"17","mobile":"135****6789"}这种json数据。
问题是,未登录是mobile:135****6789,而登录后在a.php中会显示成13533446789,但是如果在登录状态打开b.php仍然显示不全,(即只会在a.php中显示全)
而我用上述提到的三种方法都不能得到完整的手机号,所以想问是我的抓取方法不对吗?有经验的能提供下采集这种数据的方法吗?
注:我模拟登录是成功的,也尝试设置过cookie、referer、agent但都不能使号码显示全。

回复内容:

我最近在学习php抓取,遇到一个问题被困扰了好长时间了,
我在抓取一个页面的信息(假设a.php),这个页面只是一些基本的html框架,其他关键信息是通过ajax请求(b.php)回来的,返回的是json,然后在通过页面js将json解析,绘制到页面上。问题的关键是ajax请求的信息里有个手机号码需要登录后才显示完整,
我尝试的方法一:模拟登录后直接抓取页面(a.php),遇到ajax不能跨域调用;
方法二:用模拟登录抓取json数据(b.php)得到(api.php)想要的手机信息仍不能完全显示,
方法三:通过替换把ajax调用的页面(b.php)替换为本地地址(api.php),仍不能显示。

请问是我抓取的方法不对还是这种数据根本没办法抓取到,再或是我的方法中关键参数不对?求大神指点!

补充:可能我没表述清楚,原网站利用ajax请求b.php获得json数据,
如果直接访问b.php也是可以直接得到:{"name":"zhangsan","age":"17","mobile":"135****6789"}这种json数据。
问题是,未登录是mobile:135****6789,而登录后在a.php中会显示成13533446789,但是如果在登录状态打开b.php仍然显示不全,(即只会在a.php中显示全)
而我用上述提到的三种方法都不能得到完整的手机号,所以想问是我的抓取方法不对吗?有经验的能提供下采集这种数据的方法吗?
注:我模拟登录是成功的,也尝试设置过cookie、referer、agent但都不能使号码显示全。

问题的关键是ajax请求的信息里有个手机号码需要登录后才显示完整

不是很清楚你这句话的意思。你是说请求b.php页面时带着手机号码还是返回b.php界面时json数据中带着这个。然后你还没说清楚你现在问题卡在哪

你可能需要这类玩意儿

http://casperjs.org/

但是这类玩意儿抓取效率不会很高

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