2017-08-05 3 views
1

Un site Web a HTML intérieur rebâtiecomment obtenir des propriétés html internes d'une balise div dans beautifulsoup

Belle soupe n'est pas extrayait codes HTML embeded.

J'ai besoin d'extraire div élément avec class = qwjRop

pour exemple pas en mesure d'extraire "A ce prix bien" forme balise div

import requests 
from bs4 import BeautifulSoup 

url="https://www.flipkart.com/hp-pentium-quad-core-4-gb-1-tb-hdd-dos-15-be010tu-notebook/product-reviews/itmeprzhy4hs4akv?page1&pid=COMEPRZBAPXN2SNF" 


def clawler(in_url): 
    source_code = requests.get(in_url) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, "html.parser")  

    for name in soup.findAll('div',{'class':'qwjRop'}): 
     print(name.prettify()) 
+0

Pouvez-vous nous donner un échantillon du HTML que vous rencontrez des problèmes d'analyse syntaxique? Et que voulez-vous dire exactement par "codes HTML incorporés"? Voulez-vous dire un iframe? – geekonaut

+0

édité le code complet aimablement regarder dans ... –

Répondre

1

La page est rendue avec JavaScript vous pouvez utiliser Selenium pour le rendre:

Première installation Sélénium:

sudo pip3 install selenium 

Ensuite, obtenir un pilote https://sites.google.com/a/chromium.org/chromedriver/downloads vous pouvez utiliser une version sans tête de chrome "Chrome Canary" si vous êtes sur Windows ou Mac.

import bs4 as bs 
from selenium import webdriver 
browser = webdriver.Chrome() 
url="https://www.flipkart.com/hp-pentium-quad-core-4-gb-1-tb-hdd-dos-15-be010tu-notebook/product-reviews/itmeprzhy4hs4akv?page1&pid=COMEPRZBAPXN2SNF" 
browser.get(url) 
html_source = browser.page_source 
browser.quit() 
soup = bs.BeautifulSoup(html_source, "html.parser") 
for name in soup.findAll('div',{'class':'qwjRop'}): 
    print(name.prettify()) 

ou pour d'autres méthodes non-sélénium voir ma réponse à Scraping Google Finance (BeautifulSoup)

+0

Merci beaucoup, me gratter la tête depuis le matin pour résoudre ce problème. –