我正试图登录server.growatt.com提取太阳能和电池数据,因为我想自动上传到pvoutput.org。 登录后,我只需要获取几个数据点。在使用html解析器之后,我尝试使用BeautifulSoupFind函数搜索单词“Solar”。参见代码。它在运行时返回None。我打印整个html输出,但找不到Solar。如果我检查网站上的html,Solar将被列出。我添加了asyncio.sleep,让网站有时间登录。我相信登录可以正常工作,因为返回的文件很大,但嵌入的数据不在那里。你知道我哪里出错了吗
import requests
import asyncio
from bs4 import BeautifulSoup as bs
from config import username, password, lang
URL = 'https://server.growatt.com/index'
LOGIN = 'https://server.growatt.com/login'
s = requests.session()
login_payload = {
'account': username,
'password': password,
'lang' : lang
}
login_req = s.post(LOGIN, data=login_payload)
print(login_req.status_code)
async def main():
await asyncio.sleep(5)
asyncio.run(main())
soup = bs(s.get(URL).text, 'html.parser')
find = soup.find('Solar')
print(soup)
print(find)
我注意到,您试图使代码异步,而它根本不是
首先,必须使用requests异步方法
其次,登录过程需要对两个不同的
urls
请求两个POST
下面,我使用了一个名为trio的高级
Async
库另一方面,我使用了支持异步请求的httpx
下面是一个简单的代码:
输出:
相关问题 更多 >
编程相关推荐