请不要关闭此问题-这不是重复问题。我需要使用Python请求而不是Selenium来单击按钮,如here
我正在努力刮。我有一个问题:我只能得到20个示例,然后我需要在页面上多次单击“显示更多示例”按钮以获得完整的结果列表。它可以简单地使用web浏览器来完成,但如何使用Python请求库来完成呢
我查看了按钮的HTML代码,但找不到onclick
属性来查看附加到它的JS脚本,我不明白需要发送什么请求:
<button id="load-more-examples" class="button load-more " data-default-size="14px">Display more examples</button>
下面是我的Python代码:
from bs4 import BeautifulSoup
import requests
import re
with requests.Session() as session: # Create a Session
# Log in
login_url = 'https://account.reverso.net/login/context.reverso.net/it?utm_source=contextweb&utm_medium=usertopmenu&utm_campaign=login'
session.post(login_url, "Email=reverso.scraping@yahoo.com&Password=sample",
headers={"User-Agent": "Mozilla/5.0", "content-type": "application/x-www-form-urlencoded"})
# Get the HTML
html_text = session.get("https://context.reverso.net/translation/russian-english/cat", headers={"User-Agent": "Mozilla/5.0"}).content
# And scrape it
for word_pair in BeautifulSoup(html_text).find_all("div", id=re.compile("^OPENSUBTITLES")):
print(word_pair.find("div", class_="src ltr").text.strip(), "=", word_pair.find("div", class_="trg ltr").text.strip())
注意:您需要登录,否则它将只显示前10个示例,而不会显示按钮。您可以使用此real身份验证数据:
电子邮件:reverso。scraping@yahoo.com
密码:示例
下面是一个解决方案,它使用
requests
获取所有示例语句,并使用BeautifulSoup
删除其中的所有HTML标记:首先,我从Google Chrome开发工具收到了请求:
然后,我打开this online-tool,将复制的卷曲插入左侧的文本框,并复制右侧的输出(为此使用Ctrl-C热键,否则它可能无法工作)
之后,我将其插入IDE并:
cookies
dict-此处不需要它data
字符串重写为Python字典,并用json.dumps(data)
包装,否则,它返回一个带有空单词列表的请求。for
循环,该循环获取此次数的单词,并在没有HTML标记的情况下打印它们(使用BeautifulSoup)UPD:
对于那些访问该问题以了解如何使用Reverso上下文(不仅仅是模拟其他网站上的按钮点击请求)的人来说,Reverso API发布了一个Python包装器:Reverso-API。它可以做与上面相同的事情,但要简单得多:
相关问题 更多 >
编程相关推荐