为何用python抓取谷歌看不到真实html

开源中国首席煤工 发布于 2012/07/16 19:59
阅读 1K+
收藏 0
如题:我在用urllib2模拟浏览器抓取谷歌的搜索量时发现,抓取到的源码里面不包含“找到约 20,500,000 条结果”类似这样的文字,大神指点!
加载中
0
少帮主
少帮主

引用来自“大杨杨杨”的答案

引用来自“少帮主”的答案

页面中包含的ajax请求在非web browser(譬如你使用urllib的方式)下不会执行的缘故。在browser环境下其实是多次http请求组装后的结果

由于这里用firebug可以看到真实的html,我看他们给的解释是,firebug那个看的是根据当前的DOM还原产生的html代码,和临时文件夹里面那个文件已经不一样了。有什么办法可以尝试吗?

firebug 和 chrome debug等工具当然能看到dom 内存映像,你查看源码(chrome ctrl + u)就可以看到根本没有那个多少条记录的数字,原因就是上面说的
0
少帮主
少帮主
页面中包含的ajax请求在非web browser(譬如你使用urllib的方式)下不会执行的缘故。在browser环境下其实是多次http请求组装后的结果
0
开源中国首席煤工
开源中国首席煤工

引用来自“少帮主”的答案

页面中包含的ajax请求在非web browser(譬如你使用urllib的方式)下不会执行的缘故。在browser环境下其实是多次http请求组装后的结果

由于这里用firebug可以看到真实的html,我看他们给的解释是,firebug那个看的是根据当前的DOM还原产生的html代码,和临时文件夹里面那个文件已经不一样了。有什么办法可以尝试吗?

0
梵高
梵高

1)包含在js中

2)对汉字进行了编码

0
寒晨
寒晨
呵呵 注意user-agent  cookie 
0
wediolee
wediolee

抓取网页,里面的js之类的没有执行,所以和浏览器最终看到的结果不一样。

尝试分析页面里的“动态”代码,针对拿出解决方法。

另外,记忆中好像C# form 里面的webbrowser印象中好像有办法可以抓到浏览器解析后的结果?

0
mahone
mahone

看到大家那些是js,那问下,假如要获取这些js数据,该怎么办?怎么模拟?

新浪微博,好像也是js去获取数据。。。

catty
catty
Java可以用javax.script.ScriptEngine來執行javascript Python應該也用類似的吧?
0
开源中国首席煤工
开源中国首席煤工

引用来自“wediolee”的答案

抓取网页,里面的js之类的没有执行,所以和浏览器最终看到的结果不一样。

尝试分析页面里的“动态”代码,针对拿出解决方法。

另外,记忆中好像C# form 里面的webbrowser印象中好像有办法可以抓到浏览器解析后的结果?

c# 据说是这个可以获取到webBrowser.Document.GetElementsByTagName("A"); 
0
开源中国首席煤工
开源中国首席煤工

引用来自“mahone”的答案

看到大家那些是js,那问下,假如要获取这些js数据,该怎么办?怎么模拟?

新浪微博,好像也是js去获取数据。。。

是的,头大,求大神现身
0
crifan
crifan

引用来自“大杨杨杨”的答案

引用来自“mahone”的答案

看到大家那些是js,那问下,假如要获取这些js数据,该怎么办?怎么模拟?

新浪微博,好像也是js去获取数据。。。

是的,头大,求大神现身

话说,简单的js,或者说不是特别负责的js,一般可以利用IE9的F12调试出来执行过程,就可以找到想要的数据是如何产生的了。

如何调试,可参考:

【总结】浏览器中的开发人员工具(IE9的F12和Chrome的Ctrl+Shift+I)-网页分析的利器

 

特别复杂的js,貌似真的没有好的办法。。。 

返回顶部
顶部