I Anker-Links mit class = „_ 1UoZlX“ aus den Suchergebnissen von dieser bestimmten Seite kratzen wollen - https://www.flipkart.com/search?as=on&as-pos=1_1_ic_sam&as-show=on&otracker=start&page=6&q=samsung+mobiles&sid=tyy%2F4ioScraping Elemente gerendert Reagieren JS mit BeautifulSoup
Als ich erstellt eine Suppe von der Seite erkennen ich, dass die Suche Ergebnisse werden mit React JS gerendert und daher kann ich sie in der Seitenquelle (oder in der Suppe) nicht finden.
Hier ist mein Code
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
listUrls = ['https://www.flipkart.com/search?as=on&as-pos=1_1_ic_sam&as-show=on&otracker=start&page=6&q=samsung+mobiles&sid=tyy%2F4iof']
PHANTOMJS_PATH = './phantomjs'
browser = webdriver.PhantomJS(PHANTOMJS_PATH)
urls=[]
for url in listUrls:
browser.get(url)
wait = WebDriverWait(browser, 20)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "_1UoZlX")))
soup = BeautifulSoup(browser.page_source,"html.parser")
results = soup.findAll('a',{'class':"_1UoZlX"})
for result in results:
link = result["href"]
print link
urls.append(link)
print urls
Dies ist der Fehler Ich erhalte.
Traceback (most recent call last):
File "fetch_urls.py", line 19, in <module>
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "_1UoZlX")))
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Screenshot: available via screen
Jemand in this answer erwähnt, dass es einen Weg gibt, Selen zu verwenden, um die Javascript auf einer Seite zu verarbeiten. Kann jemand darauf eingehen? Ich habe etwas gegoogelt, konnte aber keinen Ansatz finden, der für diesen speziellen Fall funktioniert.
Ich bin eine Maden-Browser. Das ist vielleicht warum. Wird mit einem normalen Browser versuchen. – dontpanic
Headless Browser sollte gut funktionieren. Regulärer Browser wird leicht zu sehen sein, die Ausgabe. Sie können zum normalen Browser wechseln, sobald das Problem behoben ist. Flipkart öffnet die Fehlerseite die meiste Zeit. Sie sollten das Skript so konfigurieren, dass es bei jedem Auftreten auf die Schaltfläche "Wiederholen" klickt. – Sriraman