Python:自动登录网站帐户并为每次登录尝试提取信息的最佳方法?

2024-04-25 22:54:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有人可以推荐在Python3.5中执行此操作的最佳过程:

我有250套用户名和密码 我必须登录到一个特定的网站为每个帐户(所以250次)和抓取他们的帐户信息

我见过一些例子,但通常只有一次登录尝试。但是对于多次登录呢?在

import requests
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup


# read accounts information from spreadsheet
data = pd.read_csv("HWIN Accounts.csv")
data.dropna()

# Parameters to be called
url = 'https://www.hwin.ca/hwin/login.jsp'
USERNAME = data['Username']
PASSWORD = data['Password']
data = []
data2 = []

# Find Outstanding Payments Due on Payment Tab
def find_payment(html):
    soup = BeautifulSoup(html)
    table = soup.find("td", {"class": "success"}, text=True)
    data2.append(table.text)

# Find Account Status
def find_account_status(htmls):
    soup = BeautifulSoup(htmls)
    table = soup.find('table', border="0", cellpadding="2")
    table_body = table.find('tbody')
    rows = table_body.find_all('tr')
    for row in rows:
        cols = row.find_all('td')
        cols = [ele.text.strip() for ele in cols]
        data.append([ele for ele in cols if ele])

# Sign into HWIN looping through each individual account
for i in range(len(USERNAME)):
    browser = webdriver.Firefox()
    browser.get(url)
# Input Login information into form
    username = browser.find_element_by_name("userName")
    username.send_keys(USERNAME[i])
    password = browser.find_element_by_name("password")
    password.send_keys(PASSWORD[i])
    form = browser.find_element_by_name("imageField")
    form.submit()
# Navigate to Account Status Tab
    browser.find_element_by_link_text("Account status").click()
# Extract Account Status Tab
    htmls = browser.page_source
    find_account_status(htmls)
# Navigate to Payments Tab
    browser.find_element_by_name("payments").click()
# Extract Payment data
    html = browser.page_source
    find_payment(html)
# Close Browser
    browser.quit()

print(data)
print(data2)

Tags: textfromimportbrowserdatabyhtmltable