python模拟表单提交(一)

发布时间:2019-08-26 07:19:43编辑:auto阅读(2016)

      以后可能要用到这方面的东西,所以先实践一下,比如抢火车票。

     第一步:本地搭建一个程序, 如下,代码很丑陋,别笑

         主要就是一个用户名,一个密码框,和一个提交按钮

    1. <html>  
    2. <head><title>Example</title></head>  
    3. <body>  
    4.  <?php  
    5.    if (isset($_POST["username"])) {  
    6.      echo "you password is " . $_POST["pwd"];   
    7.    }   
    8.    else {  
    9.      echo "no!";  
    10.    }  
    11.  ?>  
    12.  <form name = "myform" action = "" method = "post">  
    13.    <label>用户名:</label><input type="text" name = "username"></input></br>  
    14.    <label>密码</label><input type="password" name = "pwd"></input></br>  
    15.    <input type="submit" name = "ok"></input>  
    16.  </form>  
    17. </body>  
    18. </html> 

    第二步: 使用工具分析浏览器提交的工具,可以用抓包工具。我使用的是火狐浏览器,本身就提供有这样的工具:

       选择开发者工具,WEB开发者-》WEB控制台-》网络

     

     

    第三步:写python代码,我也是谷歌找来的,如下

    1. # -*- coding: utf-8 -*-    
    2. import re    
    3. import urllib    
    4. import urllib2    
    5. import cookielib    
    6.  
    7.  
    8. cj = cookielib.CookieJar()    
    9. #我们post的表单数据    
    10. post_data = urllib.urlencode({'username''hhq','pwd''1000'})    
    11. #登录路径    
    12. path = 'http://localhost:81/'    
    13. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))    
    14. opener.addheaders = [('User-agent''Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101 Firefox/20.0')]    
    15. urllib2.install_opener(opener)    
    16. req = urllib2.Request(path, post_data)    
    17. conn = urllib2.urlopen(req)    
    18.  
    19. print urllib2.urlopen(req).read()    

    到这里,print 出来的就是提交表单后的网页。

    代码有些地方我也不是很理解,找到两篇文章如下,有空慢慢学习:

    http://www.cnblogs.com/yuxc/archive/2011/08/01/2123995.html

    http://www.cnblogs.com/icgg/articles/1703392.html

    今天就先到这里。

关键字