擅长:python、mysql、java
<p>首先,我们应该创建一个会话(某种模拟无头浏览器的方式,因为会话对象总是存储cookies、会话id、头,以及与真实用户会话相关的任何内容)</p>
<p>然后应该打开网站(模拟你到达登录页面,因为cookies很重要)</p>
<p>要查看整个过程,请在Chrome中打开一个开发人员控制台,重现整个登录过程,并查看Networking选项卡,查看浏览器发出的请求,查找related To the login,然后您将在那里找到登录站点所需的负载。你知道吗</p>
<p>其中一些应该被解析,因为无法解析(哈希、表单日期和数据,具体取决于网站)
在我们的例子中<code>form date</code>应该用lxml.html文件(您可以在开发人员控制台的Elements页中搜索它,并收集它的'xpath'</p>
<p>下面的代码再现了您在浏览器中所做的整个过程</p>
<pre><code>import requests
import lxml.html
session = requests.Session()
login_page = session.get('http://weborder2.givi.it/home')
form_date = lxml.html.fromstring(login_page.content).xpath('//*[@id="_58_fm"]/input[1]')[0]
data = {'_58_formDate': form_date,
'_58_saveLastPath': 'false',
'_58_redirect': '',
'_58_doActionAfterLogin': 'false',
'_58_login': your_login_name,
'_58_password': your_password,
'_58_rememberMe': 'false'}
session.post('http://weborder2.givi.it/home?p_p_id=58&p_p_lifecycle=1&p_p_state=maximized&p_p_mode=view&_58_struts_action=%2Flogin%2Flogin', data = data)
</code></pre>