Estoy tratando de extraer una tabla de la página web (https: // es. wikipedia.org/wiki/2018%E2%80%9319_Premier_League) usando selenio y BeautifulSoup.

Pero estoy atrapado con la tabla de análisis. Solo quiero una tabla de la página web que sea "Tabla de la liga", pero sea lo que sea lo que he intentado, recibí mensajes de error.

Aquí está mi código que he probado.

 import selenium 
from bs4 import BeautifulSoup
from selenium import webdriver
import time
driver.get("https://google.com")
elem = driver.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input')
elem.send_keys("2018 epl")
elem.submit()
try:
   print(driver.title)
driver.find_element_by_partial_link_text("Wikipedia").click()
website = requests.get(driver.current_url).text

soup = BeautifulSoup(website, 'html.parser')

Y luego me enfrento a problemas ... He probado varios códigos, uno de ellos está debajo.

rows=soup.find_all('td')

Entonces, ¿me pueden ayudar a completar mi código? Muchas gracias.

1
wan 8 oct. 2019 a las 16:06

3 respuestas

La mejor respuesta

Puede usar pandas read_html y extraer a través del índice apropiado. Sin embargo, mostraré el uso de: tiene selector para bs4 4.7.1 + para garantizar que seleccione h2 que tiene id League_table y luego el combinador de hermanos inmediato para obtener la tabla adyacente

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

r = requests.get('https://en.wikipedia.org/wiki/2018%E2%80%9319_Premier_League')
soup = bs(r.content, 'lxml')
table = pd.read_html(str(soup.select_one('h2:has(#League_table) + table')))
print(table)

Solo lee_html

import pandas as pd

tables = pd.read_html('https://en.wikipedia.org/wiki/2018%E2%80%9319_Premier_League')
print(tables[4])
2
QHarr 8 oct. 2019 a las 20:11

Obtuve la tabla usando este código debajo de su código.

soup.body.find_all("table", class_="wikitable")[3]

Encontré la tabla usando el método de prueba y error, es decir, primero veo la clase de la tabla y luego uso find_all y luego enumero elementos individuales y verifico la salida.

0
laksh oswal 8 oct. 2019 a las 20:52

Tal vez eso te ayude a comenzar:

import requests
from bs4 import BeautifulSoup

respond = requests.get('https://en.wikipedia.org/wiki/2018%E2%80%9319_Premier_League')
soup = BeautifulSoup(respond.text, 'lxml')
table = soup.find_all('table', {'class': 'wikitable'})
0
ofeksr 8 oct. 2019 a las 13:38
58286963