我正在尝试用python和webscraping自动化一些任务。但首先,我需要登录一个网站,我有一个帐户。你知道吗
我见过几个关于堆栈溢出的例子,但是由于某些原因,这个网站不允许我使用请求登录。有人能告诉我我做错了什么吗?你知道吗
网页: https://www.americanbulls.com/Signin.aspx?lang=en
表单变量: ctl00$main内容$uEmail ctl00$MainContent$uPassword
是因为变量名中有“$”吗?你知道吗
任何帮助都将不胜感激。你知道吗
import sys
print(sys.path)
sys.path.append('C:\program files\python36\lib\site-packages\pip\_vendor')
import requests
import sys
import time
EMAIL = '<my_email>'
PASSWORD = '<my_password>'
URL = 'https://www.americanbulls.com/Signin.aspx?lang=en'
# Start a session so we can have persistant cookies
session = requests.session()
#This is the form data that the page sends when logging in
login_data = {
'ctl00$MainContent$uEmail': EMAIL,
'ctl00$MainContent$uPassword': PASSWORD
}
# Authenticate
r = session.post(URL, data=login_data, timeout=15, verify=True)
# Try accessing a page that requires you to be logged in
r = session.get('https://www.americanbulls.com/members/SignalPage.aspx?lang=en&Ticker=SQ')
print(r.url)
我提交了一份表格test@test.test测试当我在chromedev工具的network选项卡中查看请求的标题时,它说我提交了以下表单数据。你知道吗
你的代码看起来很棒。脚本似乎失败了,因为您没有提交浏览器正常提交的所有内容。您可以尝试沿着当前的路径继续,提交所有额外的表单数据,并且希望您不必费心添加CSRF令牌(CSRF令牌是一个随机生成的字符串,您需要将其发送回),或者您可以按照Sidharth Shah suggested的操作并使用Selenium。你知道吗
Selenium有一个Firefox扩展,它允许您开始记录鼠标和键盘的操作,然后在完成后,您可以用Python导出结果。Python代码将依赖于Selenium库和Selenium Chrome/Firefox/IE驱动程序。运行Python代码时,将打开一个新的浏览器窗口,由selenium驱动程序和Python代码控制。这很酷,你基本上是在编写控制浏览器窗口的Python代码。你将不得不修改Python代码,Firefox扩展会给你一点时间来读取页面中的所有数据,并在你登录后开始处理这些数据,但是打开浏览器窗口、导航到登录页面、填写登录凭据和提交表单的代码,登录后导航到其他页面都将为您编写。你知道吗
相关问题 更多 >
编程相关推荐