如何用Python脚本自动提交注册信息?

tianxicool 2010-10-12 02:05:17
工作中遇到一个问题,需要在一个页面上填写一些信息,然后提交这些信息。不需要填验证码之类的。要提交的信息保存在了.csv文件中。
想了想,可以用selenium模拟手工操作浏览器的方法实现,但是效率不高。
于是乎想到了无所不能的Python,比较简洁,用解析HTML的方法不知道是否可以实现,希望高手给予指点。偶没做过web开发,希望您不吝啬文字^^
这个是内部网站,所以偶并不是在这里求恶意的程序。实在是手工劳动量太大了 >_<~
...全文
774 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixq2000 2010-11-02
  • 打赏
  • 举报
回复
使用cPAMIE模块看看行不行。
matlab2000 2010-10-31
  • 打赏
  • 举报
回复
呵呵。做这种关键不要考虑网页,只看POST给服务端的是什么就可以了。毕竟httplib库不能执行js代码,所以你把传递给服务端的数据构造出来,直接传递就好了。我做过用post给设备升级的,就是那个file控件那种。
rong818 2010-10-28
  • 打赏
  • 举报
回复
以前在实现论坛自动发贴的时候写的代码,其中data部分就是你要提交的数据。
其实最好的方式就是你自己在提交一次注册信息的时候,抓包看一下post了什么东西,然后把data部分改成你要提交的东西,注意报文格式,就可以了。
#!/usr/bin/python

import cookielib, urllib2, urllib, sys, time
import httplib


http = httplib.HTTP('你要连接的host')

# write header
http.putrequest("POST", '/phpwind/post.php?')
http.putheader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; MAXTHON 2.0)")
http.putheader("Referer", 'http://10.16.62.100/phpwind/post.php?fid=2')
http.putheader("Host", '10.16.62.100')
http.putheader("Cookie", cookie)
http.putheader("Content-Type", 'multipart/form-data; boundary=---------------------------7d91d42da0af0')
http.putheader("Content-Length", str(len(data)))
http.endheaders()

# write body
http.send(data)

# get response
errcode, errmsg, headers = http.getreply()

if errcode != 200:
raise Error(errcode, errmsg, headers)
file = http.getfile()
print file.read()
sfasssfass 2010-10-19
  • 打赏
  • 举报
回复
比如A页面上有很多链接,一些是可以看的,一些是需要登录后才能看的(假如为B页面),我已经有了A页面的源码。也就有了B页面的链接地址,现在要做的就是通过B页面的这个地址提交登录信息并获取到B页面的源码信息。麻烦给个大概的代码案例。谢谢,1L的链接我看了,但看的不是明白,还是不知道要怎么提交登录信息。。。
tianxicool 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sfasssfass 的回复:]
呃,我也遇到了和LZ类似的问题了,我是要获取一个网站的源码,但是那个网站做了阅读限制,没有登录无法阅读。也就获取不到源码,想要让程序自动登录(已注册了用户名和密码)并获取网页源码,不知道要怎么实现了。求高手解答啊
[/Quote]
我试过不同的网站,一般登陆页面都是有加密的。如果你的网站没有加密,登陆应该很简单。可以用httpfox查看post data,看看里面有哪些数据,然后用urlencode编码之后再用urlopen打开就可以进入网站了。可以参考一楼提供的那个链接里面有代码。
不知道你问的是不是这个问题。。
sfasssfass 2010-10-19
  • 打赏
  • 举报
回复
呃,我也遇到了和LZ类似的问题了,我是要获取一个网站的源码,但是那个网站做了阅读限制,没有登录无法阅读。也就获取不到源码,想要让程序自动登录(已注册了用户名和密码)并获取网页源码,不知道要怎么实现了。求高手解答啊
saberwen 2010-10-18
  • 打赏
  • 举报
回复
python
嗯 越来越兴趣了
tianxicool 2010-10-18
  • 打赏
  • 举报
回复
Hi iambic,

1. 我用Httpfox插件来查看提交的表单,可是POST请求的内容为空,而content里面有一堆代码不知道是什么。我提交的内容有文本和图片。是不是所谓的MIME类型编码?如果是我该怎么处理?

2. 我查看登陆页面的POST请求,可以看到用户名、密码和提交动作,还有一个authenticity_token: 一串随机字符(例如:authenticity_token: dWG7bOq5m7O3arurtgWGcq3nCX0WZRGTEDf+1OVnpqs=)。我用urlencode对用户名、密码和提交动作进行编码然后用urllib2.urlopen打开,服务器返回了500。我估计是这个authenticity_token的原因,请问我该怎么处理?
guzl86 2010-10-13
  • 打赏
  • 举报
回复
学习。。。
顶起。。。
iambic 2010-10-12
  • 打赏
  • 举报
回复
如果没验证的话比较容易,用urllib/urllib2和网页,配合re或者html库来解析。多搜下吧,比如这个:
http://pleac.sourceforge.net/pleac_python/webautomation.html
主要是细节,你必须要自己分析网页的请求与响应,并且要注意cookie,以及referer之类的http header。

37,719

社区成员

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

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