(硒)为什么所有元素看起来都一样?

2024-10-03 11:17:26 发布

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

我试图将我所有的steam游戏时间转换为熊猫数据帧,但我得到的输出如下,所有游戏和时间看起来都一样。我在代码中是否犯了任何错误?如果是,我如何修复它

输出:

title                 hour
0    The Witcher 3: Wild Hunt  kayıtlarda 137 saat
1    The Witcher 3: Wild Hunt  kayıtlarda 137 saat
2    The Witcher 3: Wild Hunt  kayıtlarda 137 saat
3    The Witcher 3: Wild Hunt  kayıtlarda 137 saat
4    The Witcher 3: Wild Hunt  kayıtlarda 137 saat
..                        ...                  ...
312  The Witcher 3: Wild Hunt  kayıtlarda 137 saat
313  The Witcher 3: Wild Hunt  kayıtlarda 137 saat
314  The Witcher 3: Wild Hunt  kayıtlarda 137 saat
315  The Witcher 3: Wild Hunt  kayıtlarda 137 saat
316  The Witcher 3: Wild Hunt  kayıtlarda 137 saat

[317 rows x 2 columns]
from selenium import webdriver
import pandas as pd

url = 'https://steamcommunity.com/id/username/games/?tab=all'


driver = webdriver.Chrome(
    executable_path="path/chromedriver.exe")
driver.get(url)
game_hour_infos = []
games = driver.find_elements_by_class_name('gameListRow')
for game in games:

    title = game.find_element_by_xpath(
        '//*[starts-with(@id,"game_")]/div[2]/div[1]/div[1]/div').text
    hour = game.find_element_by_xpath(
        '//*[starts-with(@id,"game_")]/div[2]/div[1]/div[1]/h5').text
    ghi = {
        "title": title,
        "hour": hour
    }

    game_hour_infos.append(ghi)


print(pd.DataFrame(game_hour_infos))
driver.close()

Tags: thedividgametitledrivergameshunt
1条回答
网友
1楼 · 发布于 2024-10-03 11:17:26

因为您试图在元素中查找元素,所以在xpath的开头放一个.。尝试以下方法:

games = driver.find_elements_by_class_name("gameListRow")

for game in games:
    title = game.find_element_by_xpath('.//div[contains(@class,"gameListRowItemName")]').text
    hour = game.find_element_by_xpath('.//h5[contains(@class,"hours_played")]').text

    print(f"{title} : {hour}")

相关问题 更多 >