首页 > 解决方案 > 刮这个时我没有得到任何输出

问题描述

我想把我在以下网站上的打字测试中的错别字刮掉。

这是我使用的代码

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-3.xweb-scrapingbeautifulsouppython-requests

解决方案


有一个 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

推荐阅读