新手问题 有些网站用程序获取页面内容,跟用浏览器人工打开页面内容有区别

luffycn · 2015年02月22日 · 最后由 luffycn 回复于 2015年02月24日 · 2812 次阅读

用 mechanize, nokogiri, wget, curl 等获取的页面内容 跟用人工手动打开页面 在内容上有区别

请问这是怎么做到的

我用 mechanize 设置了 agent.user_agent_alias = 'Mac Firefox' 也没什么用

请问怎么解决类似的问题,如果要保持内容一致

登陆和未登录的区别吧?

你不把区别 show 出来,别人也不太好帮你判断原因的。

也有一种可能性是目标页面使用了 Ajax 动态填充内容,这个就不是那么好抓了。

应该是 javascript 获取的 json 数据填充的内容吧?

中国天气网上的实况天气就是这样的

直接贴你的 curl 的页面地址出来,让大家试试就好啦,不然大家也没有办法帮你呀。

6 楼 已删除

@luffycn

我尝试

curl -L http://www.aliexpress.com/wholesale?SearchText=princess+sofia+dress > log.html.

然后

open log.html

发现和直接在浏览器中直接打开的页面对比了一下,似乎商品列表的方式不一样。

@h_minghe 列表显示方式有两种,但重点不在于显示方式,而是商品本身不太一样

你浏览器打开看到的很有可能是 JavaScript 的执行结果,比如 Ajax 请求出来的

#9 楼 @luffycn 你真是要逼死答问题的人了,有什么不一样你说啊。

@luffycn 好吧,我暂且就假设你在爬商品。然后打开浏览去查看商品内容的时候发现该页面的商品内容和自己爬到的不一样的。

我稍后试试看。

@Rei sorry, 没注意到。。比如我用 wget 获取的页面,最后一个商品是价格 US $11.88,而用浏览器看到的最后一个商品则价格是 US $8.64 - 10.02

#13 楼 @luffycn 有些电商网站,会用 JavaScript 来设置价格,一方面方便商品选择不同的型号时动态显示对应型号的价格,另一方面避免竞争对手爬自己的价格来更新相同的产品,比如“比京东便宜 1 元”这种模式。

当然,真心要防止爬的,都是用图片替换掉价格文字的,图片还做了防 OCR 的干扰信息。

@kgen 它这个不只是价格不同,产品标题,图片,都完全不同,也就是说是另一个商品。只是说懒得去一一比较哪里不同,用价格比较容易区分。

@Rei 这是为何一开始我会忽略提醒大家,这是产品完全不同。我以为大家默认都应该顺理成章的知道

需要 登录 后方可回复, 如果你还没有账号请 注册新账号