在python3上发布请求

时间:2020-10-19 21:15:24

标签: python python-3.x http post

我最近开始使用python3进行编码,因此决定做一个项目,尝试加入Joe Biden Campaign电子邮件列表。但是,由于我收到错误作为响应,因此我的代码似乎无法正常工作。有人可以帮我吗?

import http.client, urllib.parse
email = "theterminatingunicorn777@gmail.com"
connection = http.client.HTTPSConnection("go.joebiden.com")
connection.request("POST", "/page/s/join_the_team?source=website-joinpage", urllib.parse.urlencode(
    {'email': email, 
    'firstname': "Terminating", 
    'lastname': "Unicorn", 
    'mobile': "2819573929", 
    'zip': '70655', 
    'custom-1572[0]': ''    
    }))

response = connection.getresponse()
print(response.status, response.reason)
data = response.read()
print(data)
print(email)

作为参考,我在这里使用注册链接:https://joebiden.com/join/

当我提到错误时,我指的是来自发帖请求的响应:

<!DOCTYPE html>\n
<html lang="en-US" class="no-js">
   <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
      <!-- Google Tag Manager --><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({\'gtm.start\':\r\n    new Date().getTime(),event:\'gtm.js\'});var f=d.getElementsByTagName(s)[0],\r\n    j=d.createElement(s),dl=l!=\'dataLayer\'?\'&l=\'+l:\'\';j.async=true;j.src=\r\n    \'https://www.googletagmanager.com/gtm.js?id=\'+i+dl;f.parentNode.insertBefore(j,f);\r\n    })(window,document,\'script\',\'dataLayer\',\'GTM-M96J785\');</script><!-- End Google Tag Manager -->
      <title>Joe Biden for President: Official Campaign Website  |  Join The Team | Biden for President</title>
      <script src="https://use.typekit.net/lwk5jsx.js"></script><script>try{Typekit.load({ async: false });}catch(e){}</script>
      <meta name="robots" content="noindex,follow">
      <link rel="stylesheet" id="bexc-main-css" href="https://joebiden.com/wp-content/themes/bexc/css/main.css" type="text/css" media="all">
      <link rel="canonical" href="https://go.joebiden.com/page/s/join_the_team">
      <link rel="stylesheet" href="/page/static/20201019/skins/bsd-light/signup/frontend.css" type="text/css">
      <script src="/page/static/20201019/ext/jquery/jquery-1.4.1.min.js" type="text/javascript"></script><script type="text/javascript">!window.jQuery && document.write(unescape(\'%3Cscript src="/ext/jquery/jquery-1.4.1.min.js"%3E%3C/script%3E\'))</script><script src="/page/static/20201019/ext/jquery/cookie/jquery.cookie.min.js" type="text/javascript"></script><script src="/modules/spud/js/Spud.js.php" type="text/javascript"></script><script src="/page/static/20201019/javascript/Core/form/gdprValidator.js" type="text/javascript"></script><script type="text/javascript">window.bQuery = jQuery.noConflict(true);</script>
      <link rel="stylesheet" href="/page/static/20201019/css/jquery_ui_reset.css" type="text/css">
      <script src="/page/static/20201019/javascript/bsd.js" type="text/javascript"></script><script src="/page/static/20201019/utils/locale/javascript/locale.class.js" type="text/javascript"></script><script src="/page/static/20201019/ext/yui/build/yahoo-dom-event/yahoo-dom-event.js" type="text/javascript"></script><script src="/page/static/20201019/modules/signup/javascript/locale.js" type="text/javascript"></script><script src="/page/static/20201019/modules/signup/javascript/onsubmit.js" type="text/javascript"></script><script src="/page/static/20201019/utils/ajax/ajax.class.js" type="text/javascript"></script><script src="/page/static/20201019/ext/jquery/mailcheck/jquery.mailcheck.js" type="text/javascript"></script><script type="text/javascript">\n\n(function(){\n  function setcookie(name,value,days,domain) {\n    var expires = days ? "; expires=" + (new Date(days*864E5 + (new Date()).getTime())).toGMTString()  :"";\n    document.cookie = name+"="+value+expires+"; path=/; domain="+domain;\n    document.cookie = name+"="+value+expires+"; path=/";\n  }\n  setcookie("source", "website-joinpage", 7, "americanpossibilities.org");\n}());\n</script>
   </head>
   <body class="page-bsd language-en">
      \r\n    <!-- Google Tag Manager (noscript) -->\r\n    
      <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M96J785" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
      \r\n    <!-- End Google Tag Manager (noscript) -->\r\n\r\n    <a class="skip-link screen-reader-text" href="#main-content">Skip to content</a>\r\n\r\n    
      <div class="bsd-eyebrow">
         \r\n        
         <div class="left"><a href="https://joebiden.com/">Return to joebiden.com</a></div>
         \r\n    
      </div>
      \r\n\r\n    
      <div class="site-header-wrapper">
         \r\n        
         <header id="site-header" class="clearfix">
            <div class="site-title">
               \r\n                
               <a href="https://joebiden.com/" rel="home">
                  \r\n                    
                  <div class="element-invisible">Joe Biden for President 2020: Official Campaign Website</div>
                  \r\n                    <img src="https://joebiden.com/wp-content/themes/bexc/img/logo.svg" width="135" height="56" alt="Logo for Joe Biden for President">
               </a>
               \r\n            
            </div>
            \r\n            <a href="https://secure.actblue.com/donate/joe2020" class="button red donate-button" style="right: 0;">Donate</a>\r\n        
         </header>
         <!-- #site-header -->
      </div>
      \r\n\r\n    
      <div id="main-content">
         \r\n        
         <main id="main">
            <article class="view-page post-3 page type-page status-publish hentry">
               <div class="entry-content">
                  \r\n\r\n
                  <style>\r\n   \r\n.type-page.view-page .entry-content {\r\n    font: 400 20px/27px \'brother-1816\', sans-serif;\r\n    max-width: 600px;\r\n    margin: -33px 0px 0px 75px;\r\n       \r\n}\r\n@media screen and (max-width: 1000px) {\r\nbody {\r\n    background: #ffffff;\r\n}\r\n\r\n.type-page.view-page .entry-content {\r\n    max-width: 800px;\r\n    margin: 20px auto 0 auto;\r\n}    \r\n\r\n.type-page.view-page {\r\n  \r\n    border-bottom: 0px solid #D7D7D7 !important;\r\n}\r\n\r\n#main-content {\r\n    padding-top: 20px;\r\n}\r\n\r\n}\r\n</style>
                  <!-- Content here -->
                  <div id="signupheader"></div>
                  <span class="signuperror">PLEASE CORRECT THE PROBLEMS MARKED BELOW</span><br>
                  <form name="signup" class="bsd-signup-21" action="/page/sp/join_the_team" method="post" id="signup">
                     \n
                     <table id="signuptable">
                        <tr>
                           <td>
                              \n
                              <table width="100%">
                                 <td valign="top">
                                    \n    
                                    <div class="fieldset" id="bsd-field-email">
                                       \n        
                                       <div class="label"><label class="field">Email<span class="required">*</span></label></div>
                                       \n        
                                       <div class="input"><input type="email" class="text" size="48" id="email" name="email"></div>
                                    </div>
                                    \n    
                                 </td>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%">
                                 <td valign="top">
                                    \n    
                                    <div class="fieldset" id="bsd-field-firstname">
                                       \n        
                                       <div class="label"><label class="field">First Name</label></div>
                                       \n        
                                       <div class="input"><input size="16" id="firstname" name="firstname" type="text"></div>
                                    </div>
                                    \n    
                                 </td>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%">
                                 <td valign="top">
                                    \n    
                                    <div class="fieldset" id="bsd-field-lastname">
                                       \n        
                                       <div class="label"><label class="field">Last Name</label></div>
                                       \n        
                                       <div class="input"><input size="25" id="lastname" name="lastname" type="text"></div>
                                    </div>
                                    \n    
                                 </td>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%"></table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%">
                                 <td valign="top">
                                    \n    
                                    <div class="fieldset" id="bsd-field-zip">
                                       \n        
                                       <div class="label"><label class="field">Zip Code<span class="required">*</span></label></div>
                                       \n        
                                       <div class="input"><input size="8" id="zip" name="zip" type="text"></div>
                                    </div>
                                    \n    
                                 </td>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%">
                                 <td valign="top">
                                    \n    
                                    <div class="fieldset" id="bsd-field-mobile">
                                       \n        
                                       <div class="label"><label class="field">Mobile Phone (Optional)</label></div>
                                       \n        
                                       <div class="input"><input type="tel" class="text" size="15" id="mobile" name="mobile"></div>
                                    </div>
                                    \n    
                                 </td>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%">
                                 <td valign="top">
                                    \n    
                                    <div class="fieldset" id="bsd-field-custom-1572-group">
                                       \n        
                                       <div class="label"><label class="field">Volunteer</label></div>
                                       \n        
                                       <div class="input"><input id="custom-1572_0" class="custom-1572" name="__custom-1572[0]" type="checkbox" value="1" onclick="if (this.checked) { this.form[&#039;custom-1572[0]&#039;].value=&#039;Sign up for volunteer updates&#039;; }else { this.form[&#039;custom-1572[0]&#039;].value=&#039;&#039;; } "><label for="custom-1572_0">Sign up for volunteer updates<br></label><input type="hidden" name="custom-1572[0]" value=""></div>
                                    </div>
                                    \n    
                                 </td>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%">
                                 <div style="display: none"><label for="best-contact-time">Please leave this field blank:</label> <input id="best-contact-time" name="best-contact-time" type="text"></div>
                                 <td valign="top">
                                    \n    
                                    <div class="fieldset" id="bsd-field-submit-btn">
                                       \n        
                                       <div class="label"><label class="field"></label></div>
                                       \n        
                                       <div class="input"><input name="submit-btn" value="Submit Form" type="submit" id="submit_button"></div>
                                    </div>
                                    \n    
                                 </td>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td>
                              <table width="100%">
                                 <tr>
                                    <td id="required_note"><span class="required">*</span><span style="font-size: 80%;"> denotes required field</span></td>
                                 </tr>
                                 <input name="country" type="hidden" value="US"><input name="redirect_url" type="hidden" value=""><input id="_guid" name="_guid" type="hidden" value="">
                              </table>
                           </td>
                           \n
                        </tr>
                     </table>
                  </form>
                  <div id="signupfooter"></div>
                  <script type="text/javascript">\n        bQuery(\'#email\').blur(\n            function() {\n                \n                bQuery(this).mailcheck({\n                                                domains: ["aol.com","att.net","bellsouth.net","charter.net","comcast.net","cox.net","earthlink.net","gmail.com","hotmail.com","icloud.com","live.com","mac.com","me.com","msn.com","optonline.net","outlook.com","sbcglobal.net","verizon.net","yahoo.com","ymail.com"],\n                        \n                            suggested: function(element, suggestion) {\n                               bQuery(element).parents(\'div.fieldset\').children(\'.bsd-mailcheck\').remove();\n\n                               bQuery(element).parents(\'div.fieldset\').append(\n                                   \'<span class="error bsd-mailcheck">Did you mean \' +\n                                   \'<a class="bsd-mailcheck-fix-link" href="#">\' +\n                                   suggestion.domain + \'<\' + \'/a>?<\' + \'/span>\');\n\n                               bQuery(element).parents(\'div.fieldset\').find(".bsd-mailcheck-fix-link").click(\n                                   function() {\n                                       bQuery(element).val(suggestion.address + \'@\' + suggestion.domain);\n                                       bQuery(element).parents(\'div.fieldset\').children(\'.bsd-mailcheck\').remove();\n                                   });\n                           },\n                               empty: function(element) {\n                               bQuery(element).parents(\'div.fieldset\').children(\'.bsd-mailcheck\').remove();\n                           }\n                    });\n\n            });\n</script>
                  <div id="fb-root"></div>
                  <!-- End Content -->\r\n                
               </div>
               \r\n            
            </article>
         </main>
         <!-- #main -->
      </div>
      <!-- #main-content -->\r\n    
      <footer id="site-footer">
         <div class="disclaimer">Paid for by Biden for President.</div>
         <br>
         <p>Support our presidential campaign to elect Joe Biden by signing up to <a href="https://go.joebiden.com/page/s/volunteer">volunteer</a>&nbsp;or making a&nbsp;<a href="https://joebiden.com/donate">donation</a>.</p>
         \r\n\r\n        
         <nav id="nav-footer">
            <ul class="menu">
               <li><a href="https://www.bluestate.co/privacy-policy/">Blue State Digital Privacy Policy</a>\r\n                </li>
               <li>&copy; Copyright 2019. All rights reserved.</li>
               \r\n            
            </ul>
         </nav>
      </footer>
      <!-- #site-footer -->
   </body>
</html>
'

上面写着“请纠正下面的问题”

1 个答案:

答案 0 :(得分:1)

在代码中,您将POST请求发送到注册页面,这没有什么不同,因为注册将输入详细信息发送到页面,该页面实际上将信息添加到列表中。 该页面在表单的操作详细信息中标识 动作= / page / sp / join_the_team

相关问题