1 回答
TA贡献1812条经验 获得超5个赞
您应该使用获取 cookie 发出第一个请求requests.Session(),并在发送 /login.php 时将它们发回。另外,您可以使用 beautifulsoup 获取登录表单中的所有输入名称/值,因此您只需添加您的用户名/密码(这样您就不会硬编码除用户名/密码之外的任何内容)
密码经过 md5 哈希处理,因此您可以使用它hashlib进行编码
以下进行登录调用:
import requests
from bs4 import BeautifulSoup
import hashlib
url = "https://www.myth-weavers.com"
username = "Testbug Jones"
password = "TeStBuG"
s = requests.Session()
r = s.get(url)
soup = BeautifulSoup(r.text, "html.parser")
form = soup.find("form",{"id":"login_form"})
payload = dict([(t.get("name"),t.get("value",""))
for t in form.findAll("input")
if t.get("name")
])
md5 = hashlib.md5(password.encode('utf-8')).hexdigest()
payload["vb_login_username"] = username
payload["vb_login_password"] = password
payload["vb_login_md5password"] = md5
payload["vb_login_md5password_utf"] = md5
r = s.post(f"{url}/login.php",
params= {"do": "login"},
data = payload
)
然后,您可以使用s.get(".....")如下方式获取工作表数据:
r = s.get(f"{url}/sheets")
soup = BeautifulSoup(r.text, "html.parser")
rows = soup.find("table").find_all("tr")[1:]
sheet_data = []
for row in rows:
tds = row.find_all("td")
download_link = f'{url}{tds[5].find("a")["href"]}'
json = s.get(download_link)
sheet_data.append({
"name": tds[1].text.strip(),
"template": tds[2].text.strip(),
"game": tds[3].text.strip(),
"download_link": download_link,
"json": json.json()
})
print(sheet_data)
添加回答
举报