Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 16.10.2018
Сообщений: 10

Поиск элемента на сайте с Selenium

31.01.2022, 11:45. Показов 1432. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день, есть такая задача. Пытаюсь спарсить табличку с сайта Минпромторга ""
Написал такой вот код (см.ниже, тапками не кидайте, я начинающий питонист). Пытаюсь прокликать по каждой странице таблицы и сгрузить данные в пандас датафрейм, проблема в том код не работает дальше 6 страницы, тк в классе "dx-pages" всего 6 значений, есть ли адекватный способ для перебора номеров страниц в данном случае? + мб кто-то знает как сначала вывести топ 100 значений, а потом работать с таблицей. Написал
Python
1
2
fld = driver.find_element(By.XPATH,"/html/body/div[1]/main/section/div/div/div/div[11]/div[1]/div[5]") # топ-100
#fld.click()
но таблица выгружается все равно по 10 значений
Вот код для постраничной итерации
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
url = 'https://gisp.gov.ru/pp719v2/pub/prod/'
driver.get(url) 
 
pg_list = []
pages = driver.find_elements(By.TAG_NAME, "div.dx-pages div")
for page in pages:
    try:
        pg_list.append(int(page.text))
    except:
        continue
pg_list
for pg in range(min(pg_list)+1,20):
    pg_link = driver.find_element(By.XPATH, "/html/body/div[1]/main/section/div/div/div/div[11]/div[2]/div[" + str(pg) + "]")
    pg_link.click()
    my_page = BeautifulSoup(driver.page_source)
    head_table = my_page.find_all('table')[0]
    head_rows = head_table.find_all('tr')[1]
    table = my_page.find_all('table')[1]
    rows = table.find_all('tr')
    d = dict()
    for i in range(7):
        col = []
        key = head_rows.find_all('td')[i].get_text().strip()
        #col.append(key)
        for row in rows[0:len(rows)-1]:
            r = row.find_all('td')
            col.append(r[i].get_text().strip())
        d[key] = col
    df = pd.DataFrame(d)
    table_all = pd.concat([table_all, df])
    sleep(3)
table_all.to_excel('Минпромторг.xlsx')
Миниатюры
Поиск элемента на сайте с Selenium  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2022, 11:45
Ответы с готовыми решениями:

Поиск элемента на сайте в Selenium
Делаю бота для сайта. Мне нужно что бы он нажимал на определенные элементы на сайте. Эти элементы различаются только надписью alt. ...

Поиск элемента в Selenium
Всех с новым годом коллеги! Такой вопрос я делаю чат- бота которых мониторит чат на конкретное имя и когда его видит выдает фразу при...

Поиск элемента Selenium
Пытаюсь найти найти элемент, чтобы вписать текст, но ловлю ошибку. Просьба подсказать в чем ошибка. var surname =...

2
148 / 111 / 37
Регистрация: 28.11.2013
Сообщений: 383
31.01.2022, 20:30
Лучший ответ Сообщение было отмечено Zealot92 как решение

Решение

Используйте requests post запросы, изменяйте параметр data (подпункт skip) на нужный и получайте готовый json файл со списком из 100 новых значений.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import requests
import json
 
headers = {
    'Connection': 'keep-alive',
    'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="97", "Chromium";v="97"',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Content-Type': 'application/json',
    'X-Requested-With': 'XMLHttpRequest',
    'sec-ch-ua-mobile': '?0',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36',
    'sec-ch-ua-platform': '"Windows"',
    'Origin': 'https://gisp.gov.ru',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'https://gisp.gov.ru/pp719v2/pub/prod/',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
}
 
# первая страница по 100
# data = '{"opt":{"sort":null,"requireTotalCount":true,"searchOperation":"contains","searchValue":null,"skip":0,"take":100,"userData":{}}}'
# вторая страница по 100
# data = '{"opt":{"sort":null,"searchOperation":"contains","searchValue":null,"skip":100,"take":100,"userData":{}}}'
# третья страница по 100
data = '{"opt":{"sort":null,"searchOperation":"contains","searchValue":null,"skip":200,"take":100,"userData":{}}}'
 
response = requests.post('https://gisp.gov.ru/pp719v2/pub/prod/b/', headers=headers, data=data)
print(response.json())
1
1 / 1 / 0
Регистрация: 16.10.2018
Сообщений: 10
31.01.2022, 21:00  [ТС]
Спасибо, а через мой костыль это реально сделать? А то придется полностью отказаться от своего решения, а у меня это чуть ли не первый практический пример на питоне
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.01.2022, 21:00
Помогаю со студенческими работами здесь

Selenium: поиск элемента
Добрый день. Есть вложенность: <div class = "top"> <div> <span class = "bottom"> <span> <span class =...

Selenium поиск элемента
Возможно ли найти такой элемент <div onclick="jQuery( "#loginform" ).submit();" style="cursor: pointer; position: relative;...

Работа с selenium поиск элемента
Доброго времени! Вот такой вот код: with open('work.txt') as fp: for line in fp.readlines(): options =...

Selenium xpath поиск элемента по нескольким классам
Добрый день. Есть элемент с двумя классами. <div class = "first second"> </div> Существует ли возможность сделать поиск по...

Selenium Web Driver. Поиск элемента по тексту
Вопрос предельно простой: Как найти элемент, по этому тексту Пробовал так: ... FindElements(By.LinkText("Рекламодатель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru