我已经搜索了互联网但由于登录过程无法从https://www.edline.net/InterstitialLogin.page搜索,如果有人可以为网站提供特定代码,那将会有所帮助。我也试图在python中刮。
答案 0 :(得分:3)
我发现使用Firefox的一些插件可以确定网页抓取的确切需要。
您可以使用FF的Inspector功能(工具 - > Web Developer - > Inspector)将鼠标悬停在各个元素上。
你也可以获得适用于Firefox的Selenium IDE插件(用铅笔获取带有银色Se的插件 - 而不是带有绿色拼图图标的众多插件。)如果你在浏览网站时运行它,你可以看看元素是什么。
在InterstitialLogin.page
上,使用Selenium IDE,我看到登录元素是:
ID = screenName <-- username
ID = klcq <-- password
name = submitButton <-- submit
如果您使用的是Selenium软件包,可以使用send_keys命令,例如:
userNameElement = driver.find_element_by_id('screenName')
userNameElement.send_keys('Cameron')
passWordElement = driver.find_element_by_id('klcq')
passWordElement.send_keys('Burrows')
submitButtonElement = driver.find_element_by_name('submitButton')
submitButtonElement.click()
答案 1 :(得分:1)
最好先做一些research,然后处理代码,然后在遇到问题时提出问题。
由于登录需要csrf,因此使用浏览器操作的Selenium更直接。这是一个python请求的解决方案,我没有帐户,所以我无法测试它。
import re
import requests
def get_csrf(page):
matchme = r'name="csrfToken" value="(.*)" /'
csrf = re.search(matchme, str(page))
csrf = csrf.group(1)
return csrf
def login():
login_url = 'https://www.edline.net/InterstitialLogin.page'
with requests.Session() as s:
login_page = s.get(login_url)
csrf = get_csrf(login_page.text)
# username and password here
username = 'user'
password = 'pw'
login = {'screenName': username,
'kclq': password,
'csrfToken': csrf,
'TCNK':'authenticationEntryComponent',
'submitEvent':'1',
'enterClicked':'true',
'ajaxSupported':'yes'}
page = s.post(login_url, data=login)
# if this print a page inside, it's working
print page.text
login()