python bs4 get元素不带selenium

2024-04-24 14:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我试图在弹出的主题和技能中收集数据。 我知道我可以用硒,但如果它没有用我宁愿不要。你知道吗

我试图收集的数据就在这里:

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,这可能是一个解决方案,但我不确定如何/是否可以更改此值。你知道吗

谢谢


Tags: 数据httpsorggamedatawww页面skills
1条回答
网友
1楼 · 发布于 2024-04-24 14:39:11

如果你是从我使用的主题弹出窗口寻找

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>

我是通过点击弹出窗口得到的。。突出显示文本,然后右键单击并转到inspect以定位该类。你知道吗

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

相关问题 更多 >