我正在尝试使用 Python 中的 Requests 模块发布登录网站的请求,但它实际上不起作用。我是新手…所以我不知道是否应该将我的用户名和密码设置为 cookie 或我找到的某种 HTTP 授权类型(??)。
from pyquery import PyQuery import requests url = 'http://www.locationary.com/home/index2.jsp'
所以现在,我认为我应该使用“post”和 cookies......
ck = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'} r = requests.post(url, cookies=ck) content = r.text q = PyQuery(content) title = q("title").text() print title
我感觉我对 cookie 的操作是错误的…我不知道。
如果登录不正确,主页的标题应该显示为“Locationary.com”,如果登录正确,则应该是“主页”。
如果您能向我解释一些有关请求和 cookie 的事情并帮助我解决这个问题,我将不胜感激。:D
谢谢。
…它仍然没有真正起作用。好的…这是您登录前主页 HTML 的内容:
</td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_email.gif"> </td> <td><input class="Data_Entry_Field_Login" type="text" name="inUserName" id="inUserName" size="25"></td> <td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_password.gif"> </td> <td><input class="Data_Entry_Field_Login" type="password" name="inUserPass" id="inUserPass"></td>
所以我认为我做得对,但输出仍然是“Locationary.com”
第二次编辑:
我希望能够长时间保持登录状态,并且每当我请求该域下的页面时,我希望显示的内容就像我已登录一样。
要使用 Python 中的 Requests 模块登录网站,通常需要提交 POST 请求,并将登录凭据放在表单数据中,而不是以 Cookie 的形式。Cookie 通常用于在登录后维护会话状态。
以下是登录的分步指南:
requests.Session
您可以按照以下方式进行操作:
inUserName
inUserPass
import requests from pyquery import PyQuery login_url = 'http://www.locationary.com/home/index2.jsp' username = 'USERNAME/EMAIL' password = 'PASSWORD' # Create a session object session = requests.Session() # Define the login payload payload = { 'inUserName': username, 'inUserPass': password } # Perform the login response = session.post(login_url, data=payload) # Check if login was successful by inspecting the response if "Home Page" in response.text: print("Login successful") else: print("Login failed") # Now you can use `session` to make requests while logged in content = response.text q = PyQuery(content) title = q("title").text() print(title)
session
# Make another request to a different page on the site protected_url = 'http://www.locationary.com/some/protected/page' response = session.get(protected_url) # Parse the response content = response.text q = PyQuery(content) title = q("title").text() print(title)
requests.Session()
session.get()
检查响应:如果登录失败,请检查响应文本和状态代码,查看是否有任何错误消息或有关出错原因的提示。
标头和令牌:某些网站要求在登录请求中包含其他标头或令牌(如 CSRF 令牌)。请在浏览器的开发人员工具中检查登录请求,看看是否有此类要求。
使用requests调试:
requests
启用日志记录以
查看正在发生的事情的更多详细信息:
``` import logging import http.client as http_client
http_client.HTTPConnection.debuglevel = 1
logging.basicConfig() logging.getLogger().setLevel(logging.DEBUG) requests_log = logging.getLogger(“requests.packages.urllib3”) requests_log.setLevel(logging.DEBUG) requests_log.propagate = True ```
通过遵循这些步骤并使用这些提示,您应该能够登录网站并维持您的会话。