python-3.x - 刮这个时我没有得到任何输出
问题描述
我想把我在以下网站上的打字测试中的错别字刮掉。
这是我使用的代码
from bs4 import BeautifulSoup
import requests
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}
n = 798
url = f"https://data.typeracer.com/pit/result?id=|tr:_cephas_|{n}"
page = requests.get(url, headers = header)
soup = BeautifulSoup(page.content, 'lxml')
for List in soup.select("div.replayWord"):
print(List.get_text(strip=True))
我使用了不同的选择器,还使用了 find() 和 find_all() 函数。但我无法得到这个的任何输出。请帮我弄清楚我的问题。
解决方案
有一个 python 库旨在支持您的需求。看看requests_html
安装它:
pip install requests_html
添加这个:
from requests_html import HTMLSession
那么这是你的解决方案:
from requests_html import HTMLSession
from bs4 import BeautifulSoup
#import requests
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}
n = 798
url = f"https://data.typeracer.com/pit/result?id=|tr:_cephas_|{n}"
session = HTMLSession()
r = session.get(url, headers = header)
r.html.render(timeout=60)
replayWords = r.html.find("div.replayWord")
for word in replayWords:
print(word.text)
请注意,第一次运行它时,它会chromium
作为渲染代理下载 - 这可能需要一分钟。
render
这个库在我的机器上似乎也很慢。我不确定这是该站点还是我的笔记本电脑有休息日,但是,如果您可以忍受这种延迟,则输出是:
spot
intend
must
known;
against
possible
points;
forces
being
many