Я пытаюсь получить информацию со следующего сайта, используя 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 не является итерируемым»
Как я могу это решить?
Спасибо
Вы можете получить все эти таблицы с помощью кода ниже:
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
[...]
Для получения документации по пандам перейдите сюда , а для запросов — сюда.
В самом деле. Кроме того, если мой ответ решил ваш вопрос, вы должны отметить его как принятый. @КристианАвенданьо
Спасибо. Плохая ли идея использовать для этого селен? Я написал весь код в селениуме, кроме этого :)(