我正在尝试使用 python 和 selenium 从以下站点获取信息: https://conveniomarco.mercadopublico.cl/alimentos/marketplace/seller/profile/shop/797095-5800279
它有两个部分: “商业条件”和 “地区条件”
我需要将“Condiciones Regionales”部分的所有表格放入数据框中,包括表格之外的标题。
我可以使用以下代码获取所有表格信息:
html=driver.find_element(By.CSS_SELECTOR, "body").get_attribute('outerHTML')
pd.read_html(html)[0]...
pd.read_html(html)[2]
但是通过这种方式,我失去了标题,例如“Region de Coquimbo”,因为这不是表格的一部分。
我一直在尝试迭代所有 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
[...]