gpt4 book ai didi

python bs4在没有 Selenium 的弹出窗口中获取元素

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:16 25 4
gpt4 key购买 nike

我想在此页面的弹出窗口后面收集数据。 https://www.commonsense.org/education/game/garrys-mod

我正在尝试在弹出式主题和技能中收集数据。我知道我可以使用 selenium,但如果它没有用,我宁愿不用。

我要收集的数据就在那里:

subjectSkills = gameSoup.find('div',class_='popper popper-popover subjects-skills')

但是,它返回 None,因为它位于如下所示的弹出窗口后面:

<a href="#" id="subjects-skills" class="body-color" data-toggle="popover" data-content=".subjects-skills" data-arrow="false" target="_self">Subjects &amp; skills</a>

单击箭头按钮后,data-arrow 的值变为 true,这可能是一个解决方案,但我不确定如何/是否可以更改此值。

谢谢

最佳答案

如果你正在寻找我使用的主题的弹出窗口

res = soup.findAll("div", {"class": "subjects-skills__item"})

返回的是:

<div class="subjects-skills__item">
<h5 class="subjects-skills__label">Subjects</h5>
<ul>
<li>Science</li>
</ul>
</div>,
<div class="subjects-skills__item">
<h5 class="subjects-skills__label">Skills</h5>
<ul>
<li>Creativity</li>
<li>Critical Thinking</li>
</ul>
</div>

我通过单击弹出窗口获得它。突出显示文本,然后右键单击并转到检查以找到该类。

from bs4 import BeautifulSoup as bs4
import requests

def get_data():

url = 'https://www.commonsense.org/education/game/garrys-mod'
r = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"})
html_bytes = r.text
soup = bs4(html_bytes, 'lxml')

res = soup.findAll("div", {"class": "subjects-skills__item"})

return res

test1 = get_data()

如果你只想要文本..

# For just the Text
for i in test1:
print(i.text)

返回

Subjects
Science

Skills
Creativity
Critical Thinking

关于python bs4在没有 Selenium 的弹出窗口中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com