2016-08-01 9 views
0

I m Zugriff auf eine page, die Parallax Scrolling implementiert hat. Ich verwende den Code, um nach unten zu blättern, aber BeautifulSoup es wird nicht aktualisierten DOM abgerufen. Code ist unten angegeben:Python Selenium: Wie aktualisiert man HTML DOM nach dem Scrollen?

import requests 
from bs4 import BeautifulSoup 
from gensim.summarization import summarize 

from selenium import webdriver 
from datetime import datetime 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.keys import Keys 
from time import sleep 
import sys 
import os 
import xmltodict 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
import traceback 
import random 

driver = None 
driver = webdriver.Firefox() 
driver.maximize_window() 
def fetch_links(tag): 
    links = [] 
    url = 'https://steemit.com/trending/'+tag 
    driver.get(url) 
    html = driver.page_source 
    sleep(4) 

    soup = BeautifulSoup(html,'lxml') 
    entries = soup.select('.entry-title > a') 
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
    sleep(5) 
    entries = soup.select('.entry-title > a') 
    for e in entries: 
     if e['href'].strip() not in entries: 
      links.append(e['href']) 
    return links 

Antwort

2

Sie müssen wahrscheinlich die Seite analysieren, sobald das Fenster gescrollt wird:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 

sleep(5) 

soup = BeautifulSoup(driver.page_source, 'lxml') 
entries = soup.select('.entry-title > a') 
+0

Dies ist, was ich auch versucht, aber keine Änderung – Volatil3

+0

Es scheint, dass das Problem mit ' BeautifulSoup'. Alle Titel sind in dem von 'driver.page_source' zurückgegebenen HTML enthalten. –

+0

Standardmäßig wählt es 20 Datensätze pro Seite, auf Bildlauf sollte es nächste 20 wählen – Volatil3

Verwandte Themen