利用Python抓站碰到Ajax怎么办?

tianxicool 2010-12-08 04:23:09
以前看到过某人写了一个Python抓站方法总结,可惜没提到Ajax的问题。碰到这种动态的表单,不知道该怎么办了。请问有了解的吗?
...全文
797 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kissstefani 2013-04-18
  • 打赏
  • 举报
回复
引用 6 楼 whatisnull 的回复:
例子是上海工商的,可以看看 (它是含验证码网站) poiName = "上海世博" postdata = ul.urlencode({ 'keyWords':poiName, //查询关键字 'sea……
请问 ul引用的是哪个包,新手,求指教?
youhetest 2013-04-08
  • 打赏
  • 举报
回复
引用 7 楼 XIARENDENIAO 的回复:
casperjs轻松搞定!!
你的casper怎么搞定的,给个例子看看!我急需!谢了
diffmaker 2012-07-24
  • 打赏
  • 举报
回复
刚接触Python,不太懂。只是不明白,难道网站开发的人对POST、GET过来的数据都不验证的吗?如果对来路进行验证、对IP进行验证,能那么好模拟?
crifan 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

我的天哪,当然可以了,如果是验证码,先用httpwatch工具看看post请求时的所有参数,然后把其他的参数都传过去,验证码也传,只是为空,试试应该可以的呀,我都抓取了90多个带验证码的网站。都可以这么解决。。。。
[/Quote]
偶也试过一些网站,比如网易的博客,验证码不对的话,是无法成功提交post请求的。呵呵。
所以,不知道你所遇到的那些网站,都是啥类型的网站,竟然不检查验证码是否正确的。。。

关于楼主的问题,4楼的正解。
(用手动分析js源码或用工具分析js源码)找到真正提交的url(和(可能有的)post的参数),然后同样模拟访问对应的url(get或post)即可。

关于如何手动分析源码,不多说,就是凭经验看js源码而已。
关于如何用工具分析js源码,可参考:
【总结】浏览器中的开发人员工具(IE9的F12和Chrome的Ctrl+Shift+I)-网页分析的利器
http://www.crifan.com/browser_developer_tool_chrome_vs_ie9/

其他更深入的一些问题,可以去找找偶的一些帖子,比如:
【已解决】抓取网页以分析网站登录过程中,找不到某些Cookie是从哪里获得的
http://www.crifan.com/howto_find_some_cookies_during_website_capture_simulate_login/
crifan 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

刚接触Python,不太懂。只是不明白,难道网站开发的人对POST、GET过来的数据都不验证的吗?如果对来路进行验证、对IP进行验证,能那么好模拟?
[/Quote]
正常网站,都会对POST的数据进行验证的,尤其是验证码。
对ip进行限制的网站,如果你本身没有权限访问,那是无法模拟的。
但是一般人所说的网站抓取内容,模拟登陆等,都是在有权限的情况下。一般这类网站,普通人,都是有权限访问的。不存在ip限制等特殊情况的。
Gloveing 2012-07-14
  • 打赏
  • 举报
回复
使用fiddle查看,你会发现,一切秘密就浮现了,
不管是不是Ajax,在刷新的时候,总要发送新请求,模拟这个请求
这种方法简单之极。。。我惯用了都。。。
吓人的鸟 2012-07-12
  • 打赏
  • 举报
回复
casperjs轻松搞定!!
whatisnull 2011-01-30
  • 打赏
  • 举报
回复
例子是上海工商的,可以看看 (它是含验证码网站)
poiName = "上海世博"
postdata = ul.urlencode({
'keyWords':poiName, //查询关键字
'searchType':'1' //查询类型
})
req = ul2.Request(
url=' http://www.sgs.gov.cn/lz/etpsInfo.do?method=doSearch',//请求的URL
data=postdata //请求的参数
)
data= ul2.urlopen(req).read() //读出内容
whatisnull 2011-01-30
  • 打赏
  • 举报
回复
我的天哪,当然可以了,如果是验证码,先用httpwatch工具看看post请求时的所有参数,然后把其他的参数都传过去,验证码也传,只是为空,试试应该可以的呀,我都抓取了90多个带验证码的网站。都可以这么解决。。。。
mirmuo 2011-01-26
  • 打赏
  • 举报
回复
ajax一定会有javascript,你只要分析这些javascript,弄明白它们做了什么动作,就可以用python模拟出来。
CDSoftwareWj 2011-01-20
  • 打赏
  • 举报
回复
ajax没办法用python抓,除非有虚拟浏览器 哇哈哈哈
lament_gates 2011-01-19
  • 打赏
  • 举报
回复
当作静态视图,没办法的.
iambic 2010-12-08
  • 打赏
  • 举报
回复
用各种工具抓包,无视ajax。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧