Я хотел проанализировать информацию с определенного веб-сайта , и у меня возникли проблемы с аспектом Dynami c. Когда запрос вызывается в python для этого сайта с BeautifulSoup, et c., Всего в там нет.
Согласно ответу на этот аналогичный вопрос - Почему не анализируется код html внутри div? - Я пытался использовать браузер без головы. Я закончил тем, что попытался использовать селен и осколок с включенными опциями --headless для chrome.
Я не знаю, является ли выбранный мной безголовый браузер неподходящим для настройки этого конкретного веб-сайта или это мой код, поэтому, пожалуйста, дайте мне предложения, если они у вас есть.
Примечания: Работает на Ubunutu 20.04.1 LTS и Python 3.8.3. Если вы хотите предложить другие программы браузера без головы, go впереди, но они должны быть совместимы со всеми linux, ma c, et c. и Python.
Ниже представлен мой последний код. Я пробовал разными способами «найти» кнопку, которую хочу нажать. Здесь я попытался использовать xpath нужного мне элемента, который я получил через inspect:
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--ignore-certificate-errors')
with Browser('chrome', options=options) as browser:
browser.visit("http://gnomad.broadinstitute.org/region/16-2087388-2087428?dataset=gnomad_r2_1")
print(browser.title)
browser.find_by_xpath('//*[@id="root"]/div/div/div[2]/div/div[3]/section/div[2]/button').first.click()
Сообщение об ошибке, которое это дало мне, было:
File "etc/anaconda3/lib/python3.8/site-packages/splinter/element_list.py", line 42, in __getitem__
return self._container[index]
IndexError: list index out of range
Во время обработки вышеуказанного исключения произошло другое исключение:
Traceback (последний звонок последний): Файл "practice3.py", строка 20, в browser.find_by_xpath ('// [@ id = "root"] / div / div / div [2] / div / div [3] / section / div [2] / button'). первый. нажмите () Файл "etc / anaconda3 / lib / python3 .8 / site-packages / splinter / element_list.py", строка 57, сначала вернуть себя [0] Файл "etc / anaconda3 / lib / python3 .8 / site-packages / splinter / element_list.py", строка 44, в getitem поднять ElementDoesNotExist ( splinter.exceptions.ElementDoesNotExist: не удалось найти элементы с xpath "// [@id = "root"] / div / div / div [2] / div / div [3] / section / div [2] / button »
Спасибо!