我正在尝试登录我的健身房并抓取数据,以便我可以为将来设置自动登录/预订。我是python的新手,我尝试了一些东西,我认为这是最接近的。我在网上找到了一个很好的例子但有问题。我认为登录失败使代码无法访问正确的页面进行刮擦。我使用XPath助手,它确认我的xpath是正确的但我的结果是空白的[] 请参阅下文..任何建议将不胜感激。
import requests
from lxml import html
USERNAME = "*****"
PASSWORD = "*****"
LOGIN_URL = "https://www.lafitness.com/Pages/login.aspx"
URL = "https://www.lafitness.com/Pages/RacquetballReservation.aspx"
def main():
session_requests = requests.session()
# Get login csrf token
result = session_requests.get(LOGIN_URL)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='__CSRFTOKEN']/@value")))[0]
# Create payload
payload = {
"ctl00$MainContent$Login1$txtUser": USERNAME,
"ctl00$MainContent$Login1$txtPassword": PASSWORD,
"__CSRFTOKEN": authenticity_token
}
# Perform login
result = session_requests.post(LOGIN_URL, data = payload, headers = dict(referer = LOGIN_URL))
# Scrape url
result = session_requests.get(URL, headers = dict(referer = URL))
tree = html.fromstring(result.content)
bucket_names = tree.xpath('//*[@id="ddlDates"]')
ok = result.ok
print(ok, bucket_names)
if __name__ == '__main__':
main()
我已经查找了几个尝试这样做的项目,但都没有成功。我添加了result.ok以查看它是否正确连接,它说它确实如此,但我读过它只是因为它说积极并不意味着网站正确登录。
感谢您的任何帮助/建议!