JS PATH или SPATH SYNTAX для динамической веб -страницы: извлечение информации TBOD [закрыто]Html

Программисты Html
Ответить
Anonymous
 JS PATH или SPATH SYNTAX для динамической веб -страницы: извлечение информации TBOD [закрыто]

Сообщение Anonymous »

Я очень новичок в JS, XPath и HTML, но я пытаюсь создать веб -скруббер для целей интеллектуального анализа данных.
Так что Чатгпт очень помог в получении того, что мне нужно, но, похоже, борется с JS Ссылки на пути. < /p>
Как бы я использовал CSS_SELECTOR для идентификации этого элемента, называемого LigandMaintable (см. Image) и его данные, указанные в нем? Я в основном хочу сценарий, который прочитал бы данные таблицы, извлекла имя лиганда (первая строка), информация идентификатора цепочки (вторая строка), формулу лиганда (третья строка), затем загрузите файл .svg, который связан в 4 -й строке ( которое было бы лигандом 2D -изображением). < /p>
Я не уверен, как структурировать синтаксис, чтобы правильно извлечь необходимый тип данных, который мне нужен из этих строк. Скриншот веб -сайта + html -структура
Если есть эффективный способ сделать это с помощью стандартного метода, который будет очень признателен. Я сделал с намерением извлечь информацию о лиганде: < /p>
# --- Extract Ligand Information ---
# We use the nth-child approach to match the JS paths you provided
time.sleep(2) # Ensure dynamic content is loaded
ligand_info_list = []
try:
# Grab the second in the #LigandsMainTable
second_tbody = driver.find_element(By.CSS_SELECTOR, "#LigandsMainTable > tbody:nth-child(2)")

# Find all rows in that tbody whose ID starts with "ligand_row_"
ligand_rows = second_tbody.find_elements(By.CSS_SELECTOR, "tr[id^='ligand_row_']")

for row in ligand_rows:
# 1) Ligand ID (e.g. ATP)
try:
lig_name_el = row.find_element(By.CSS_SELECTOR, "td:nth-child(1) > a:nth-child(1)")
lig_name = lig_name_el.text.strip()
except:
lig_name = ""

# 2) PDB chain in
try:
lig_chain_el = row.find_element(By.CSS_SELECTOR, "td:nth-child(2) > div")
lig_chain = lig_chain_el.text.strip()
except:
lig_chain = ""

# 3) Ligand formula
try:
lig_formula_el = row.find_element(By.CSS_SELECTOR, "td:nth-child(3)")
lig_formula = lig_formula_el.text.strip()
except:
lig_formula = ""

# Combine first three columns into a single text
combined_ligand_text = f"{lig_name} (chain: {lig_chain}, formula: {lig_formula})"
if not ligand_info_list:
ligand_info_list = "EMPTY"

except Exception as e:
ligand_info_list = "EMPTY"


Подробнее здесь: https://stackoverflow.com/questions/794 ... nformation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»