Я делаю простой скребок для извлечения информации о продажах Steam из steamDB (https://steamdb.info/sales/?min_discount=50&min_rating=70). Вот мой код:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://steamdb.info/sales/?min_discount=50&min_rating=70")
# extract the sale table and list of entries
table = driver.find_element_by_xpath("//*[@id='DataTables_Table_0']/tbody")
# key info: name/ price/ discount/ rating/ end time/ appid
for i in driver.find_elements_by_xpath(".//tr"):
for cnt, td in enumerate(i.find_elements_by_xpath(".//td")):
print(cnt, td.text)
print(i.get_attribute("data-appid"))
print("===========================")
В основном я обнаружил, что таблица содержит всю информацию о продажах и извлекает ключевые тексты, такие как название игры, цена, скидка, время начала продажи, время окончания и т. Д.
Однако я обнаружил, что после нескольких строк данных в таблице отсутствует текст об окончании / запуске / выпуске игры в продажу:
Вот хороший, который должен выглядеть так:
0
1
2 Undertale
Daily Deal
3 -61%
4 ¥ 14
5 94.18%
6 2 hours # sales end in
7 2 days ago # sales start from
8 4 years ago # game released
391540 # appid
===========================
Вот так плохо выглядит:
0
1
2 South Park™: The Stick of Truth™
Ubisoft Publisher Weekend new highest discount
3 -80%
4 $5.99
5 95.53%
6
7
8
213670
Как видите, скребок мог обнаружить тег td
в индексе 6,7,8, но не смог извлечь из него какой-либо текст.
Некоторые наблюдения:
- Я проверил дом, и я не видел никакой разницы между
ряд хороших и плохих
- Проблема воспроизводится только после первых 10 строк