@ayasaka

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

スクレイピングでパソコンのGPUと名前と値段を受け取りたい

from time import sleep

import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_path = r'C:\chromedriver_win32\chromedriver.exe'

options = Options()
options.add_argument("--incognito")
options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.use_chromium = True

driver = webdriver.Chrome(executable_path=chrome_path, options=options)

url = "https://www.dospara.co.jp/TC30"
driver.get(url)

driver.maximize_window()


sleep(1)

height = 6000
driver.execute_script("window.scrollTo(0, {});".format(height))
sleep(1)

element = driver.find_element_by_class_name("u-mt-ss")
tbody = element.find_element_by_tag_name("tbody")
trs= tbody.find_elements_by_tag_name("tr")
tr = trs[0]

gpu_name = tr.find_element_by_class_name("index_vertical").text
print(gpu_name)

desk_datas = tr.find_elements_by_class_name("desk-mapB-data")

desk_data = desk_datas[4]

desk_card = desk_data.find_element_by_class_name("desk-map-card").text

desk_name = desk_data.find_element_by_class_name("desk-map-name").text
desk_price_map = desk_data.find_element_by_class_name("desk-map-price")
desk_price = desk_data.find_element_by_class_name("item_name").text
print(desk_name)
print(desk_price)

sleep(1)

driver.quit()

element = driver.find_element_by_class_name("u-mt-ss").text
このようにすると
ALLERIA ZA7C-R49
529,980円(税込)
といったように値段が映るのですが、

tbody = elment.find_element_by_tag_name("tbody").text
さらに、中に入る
GALLERIA ZA7C-R49
円(税込)
このように値段の部分が消えてしまいます。
なぜこうなってしまうのか教えていただきたいです。

スクレイピングサイト
https://www.dospara.co.jp/TC30

0 likes

1Answer

Selenium Webdriverを使った確認ではないので若干違う回答ではあるかもしれませんが…
Webdriverでの要素に対する.textが、ブラウザのJavaScriptでの.innerTextに相当するのであれば、Chromeの開発者ツールを使った確認では、.innerTextに該当の価格が映るということが確認できました。なので、コードのロジック的には問題なさそうだと思います。
但し、実際にページを開いてみたところ、各種価格が遅れて表示される、という造りになっているようで、私の予想では、その価格の反映前にデータを読み取ってしまい、価格が.textで取ってこれない状態になっているのではないか、と思います。

0Like

Comments

  1. This comment has been deleted for violation of our Terms of Service.

Your answer might help someone💌