Перебирайте элементы div, чтобы получить таблицы, используя Selenium и Python

Я пытаюсь получить информацию со следующего сайта, используя Python и селен: https://conveniomarco.mercadopublico.cl/alimentos/marketplace/seller/profile/shop/797095-5800279

Он имеет два раздела: «Коммерческие условия» и «Региональные условия»

Мне нужно поместить все таблицы раздела «Региональные условия» в фрейм данных, включая заголовок, находящийся за пределами таблицы.

Я могу получить информацию обо всех таблицах, используя следующий код:

html=driver.find_element(By.CSS_SELECTOR, "body").get_attribute('outerHTML')
pd.read_html(html)[0]...
pd.read_html(html)[2]

Но таким образом я теряю название, например «Регион Кокимбо», потому что оно не является частью таблицы.

Я пытался перебрать все элементы div, чтобы получить заголовок, а затем внутреннюю таблицу, используя следующий код:

condiciones_regionales=driver.find_element(By.CSS_SELECTOR, "div.wk_mp_design div.wk-mp-custom-regional div.wk-mp-profile-block div.wk-mp-aboutus-data div.box-regional-info")
condiciones=condiciones_regionales.find_elements(By.CSS_SELECTOR, "div.item")
    item2=[]
    for item2 in condiciones_regionales:
        print(item2.text)

но я получаю сообщение об ошибке: «Объект WebElement не является итерируемым»

Как я могу это решить?

Спасибо

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить все эти таблицы с помощью кода ниже:

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
from io import StringIO

url = 'https://conveniomarco.mercadopublico.cl/alimentos/marketplace/seller/profile/shop/797095-5800279'

headers = {
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}

r = requests.get(url, headers=headers)
soup = bs(r.text, 'html.parser')

cod_reg_div = soup.select_one('div[id = "box-content-regional"]')
titles = cod_reg_div.select('div[class = "item"] div[class = "title"]')
for t in titles:
    df = pd.read_html(StringIO(str(t.find_next('div', {'class': 'content'}))))[0]
    df['region'] = t.text.strip()
    print(df)

Результат в терминале:

    0   1   region
0   Nombre del Contacto EGIDIO VILLA    Región de Antofagasta
1   Teléfono de Contacto    29335564    Región de Antofagasta
2   Correo de Contacto  [email protected]  Región de Antofagasta
3   Plazo de entrega máximo (días hábiles)  10  Región de Antofagasta
4   Tiempo de entrega en emergencia o catástrofe (...   192 Región de Antofagasta
5   Monto Máximo Orden de Compra    $0  Región de Antofagasta
6   Comunas de la región donde no se realiza despacho   NaN Región de Antofagasta
0   1   region
0   Nombre del Contacto EGIDIO VILLA    Región de Coquimbo
1   Teléfono de Contacto    29335564    Región de Coquimbo
2   Correo de Contacto  [email protected]  Región de Coquimbo
3   Plazo de entrega máximo (días hábiles)  5   Región de Coquimbo
4   Tiempo de entrega en emergencia o catástrofe (...   72  Región de Coquimbo
5   Monto Máximo Orden de Compra    $0  Región de Coquimbo
6   Comunas de la región donde no se realiza despacho   NaN Región de Coquimbo

[...]

Для получения документации по пандам перейдите сюда , а для запросов — сюда.

Спасибо. Плохая ли идея использовать для этого селен? Я написал весь код в селениуме, кроме этого :)(

Cristian Avendaño 04.07.2024 22:53

В самом деле. Кроме того, если мой ответ решил ваш вопрос, вы должны отметить его как принятый. @КристианАвенданьо

Barry the Platipus 04.07.2024 22:56

Другие вопросы по теме