这是一个使用所有示例句子
requests并使用以下命令删除所有HTML标记的解决方案
BeautifulSoup:
from bs4 import BeautifulSoupimport requestsimport jsonheaders = { "Connection": "keep-alive", "Accept": "application/json, text/javascript, */*; q=0.01", "X-Requested-With": "XMLHttpRequest", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36", "Content-Type": "application/json; charset=UTF-8", "Content-Length": "96", "Origin": "https://context.reverso.net", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-Mode": "cors", "Referer": "https://context.reverso.net/^%^D0^%^BF^%^D0^%^B5^%^D1^%^80^%^D0^%^B5^%^D0^%^B2^%^D0^%^BE^%^D0^%^B4/^%^D0^%^B0^%^D0^%^BD^%^D0^%^B3^%^D0^%^BB^%^D0^%^B8^%^D0^%^B9^%^D1^%^81^%^D0^%^BA^%^D0^%^B8^%^D0^%^B9-^%^D1^%^80^%^D1^%^83^%^D1^%^81^%^D1^%^81^%^D0^%^BA^%^D0^%^B8^%^D0^%^B9/cat", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",}data = { "source_text": "cat", "target_text": "", "source_lang": "en", "target_lang": "ru", "npage": 1, "mode": 0}npages = requests.post("https://context.reverso.net/bst-query-service", headers=headers, data=json.dumps(data)).json()["npages"]for npage in range(1, npages + 1): data["npage"] = npage page = requests.post("https://context.reverso.net/bst-query-service", headers=headers, data=json.dumps(data)).json()["list"] for word in page: print(BeautifulSoup(word["s_text"]).text, "=", BeautifulSoup(word["t_text"]).text)首先,我从Google Chrome DevTools得到了请求:
- 按 F12 键输入并选择“网络”选项卡
- 点击“显示更多示例”按钮
- 找到了最后一个请求(“ bst-query-service”)
- 右键单击它,然后选择 复制 >复制为cURL(cmd)
然后,我打开了此在线工具,将复制的cURL插入左侧的文本框中,并复制了右侧的输出(为此使用
Ctrl-C 热键,否则可能无法正常工作)。
之后,我将其插入到IDE中并执行以下操作:
- 删除了
cookies
字典-在这里没有必要 - 重要提示:将该
data
字符串改写为Python字典,并用进行换行json.dumps(data)
,否则,它将返回带有空单词列表的请求。 - 添加了一个脚本,该脚本:获取次数以获取单词(“页面”),并创建了一个
for
循环,该循环获取该次数的单词并在不使用HTML标签的情况下将它们打印出来(使用BeautifulSoup)
UPD:
对于那些访问了该问题以学习如何使用Reverso Context(不仅仅是模拟其他网站上的按钮单击请求)的人,有一个针对Reverso
API的Python包装器发布:Reverso-API。它可以执行与上述相同的操作,但简单得多:
from reverso_api.context import ReversoContextAPIapi = ReversoContextAPI("cat", "", "en", "ru")for source, target in api.get_examples_pair_by_pair(): print(highlight_example(source.text), "==", highlight_example(target.text))


