with scraping parser example python-3.x selenium beautifulsoup web-crawler html-parsing

python-3.x - scraping - scrape with selenium python



Solo se puede encontrar por ID, no por clase, con BeautidulSoup4(Python3.x) (1)

Soy nuevo en BeautifulSoup4 y encontré un problema que parece elemental. Solo puedo buscar por id, pero no por clase. Por ejemplo, estoy viendo un sitio que tiene la siguiente parte de html:

Ahora, los siguientes trabajos:

page_soup.findAll(''div'', {''id'': ''page-content''})

mientras que lo siguiente no encuentra nada:

page_soup.findAll(''div'', {''class'': ''main-container''})

Entonces mi pregunta es: ¿se ''trata'' la clase diferentemente de los atributos ''id''? Si es así, ¿cuál es la forma correcta de buscar por nombre de clase?

Solo para completarlo, aunque creo que no debería importar, obtuve el html utilizando el método page_source del paquete de selenium .

EDITAR : Aquí hay un ejemplo de dicha página. Si inspeccionamos la mesa superior, incluida la posición del jugador, la edad, etc., obtendremos la instantánea html anterior.


A continuación se muestran los comandos que ejecuto y funciona muy bien para mí

In [1]: from bs4 import BeautifulSoup In [2]: import requests In [3]: res = requests.get("http://www.spotrac.com/mlb/atlanta-braves/freddie-freeman-7359/") In [4]: soup = BeautifulSoup(res.text,"lxml") In [5]: len(soup.findAll(''div'', {''class'': ''main-container''})) Out[5]: 1 In [6]: soup = BeautifulSoup(res.text,"html5lib") In [7]: len(soup.findAll(''div'', {''class'': ''main-container''})) Out[7]: 1 In [8]: import sys; sys.version Out[8]: ''3.6.2 (default, Jul 17 2017, 16:44:45) /n[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]''

Como puedes ver, funciona para mí en ambos analizadores.