来自edline.net的信息

时间:2016-12-22 23:05:53

标签: python web-scraping

我已经搜索了互联网但由于登录过程无法从https://www.edline.net/InterstitialLogin.page搜索,如果有人可以为网站提供特定代码,那将会有所帮助。我也试图在python中刮。

2 个答案:

答案 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()