Я хочу очистить все данные на этом сайте.
В этой части моего скрипта будет нажата кнопка «поиск», необходимая для получения строк данных, которые я хочуscrape:
from selenium import webdriver
import os
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import pandas as pd
import time
import sys
import re
import requests
#options.add_argument("--headless")
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')
base_url = 'https://drugdesign.riken.jp/hERGdb/'
driver.get(base_url)
#click the button that says search
element = driver.find_element_by_css_selector('[name=Structure_Search]').click()
Затем мне нужно нажать на каждый LOT_ID, который приведет меня на страницу типа this , которую я могу очистить с помощью этого кода:
base_url = 'https://drugdesign.riken.jp/hERGdb/compound.php?HGID=HG-0260086'
driver.get(base_url)
## compound information table
hgid = driver.find_element_by_xpath('//tbody/tr/th[contains(.,"HGID")]/following::td[1]')
drug_name = driver.find_element_by_xpath('//tbody/tr/th[contains(.,"Drug_name")]/following::td[1]')
MW = driver.find_element_by_xpath('//tbody/tr/th[contains(.,"MW")]/following::td[1]')
Formula = driver.find_element_by_xpath('//tbody/tr/th[contains(.,"Formula")]/following::td[1]')
## ID relation table
id_table = driver.find_elements_by_xpath('/html/body/div[2]/div/div/div[2]/table[2]/tbody')
for x in id_table:
print(x.text)
## in vitro assay information table
assay_data = driver.find_elements_by_xpath('/html/body/div[2]/div/div/div[2]/table[3]/tbody')
for x in assay_data:
print(x.text)
Я не могу понять, как перебрать ВСЕ идентификаторы LOT_ID на сайте (например, на странице отображается только 10, и, кажется,> 300 000 результатов, но отображается только 1000).Таким образом, главный вопрос заключается в том, как мне просмотреть все> 300 000 LOT_ID, которые, как они говорят, являются результатами моего поиска, чтобы я мог запустить в нем вторую часть моего кода (см. Выше) (которая выполняется на каждой отдельной странице).
Я просматривал SO, я пробовал что-то вроде:
#table = driver.find_element_by_css_selector('//*[@id="foo-table"]/tbody/tr[1]/td[3]/a')
#print(table)
и тому подобное, используя XPaths и т. Д., Но я получаю ошибки вроде:
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=77.0.3865.90)
Так что есликто-то мог бы заполнить среднюю часть моего кода (я думаю, это должно быть максимум одна или две строки?), который показал бы мне, как перебрать> 300 000 LOT_ID и щелкнуть по ним, чтобы привести меня на страницу, которую я затемцарапина, я был бы признателен.