/ / python wie man den gesamten Inhalt der Webseite dynamic - python bekommt

Python, wie Sie den gesamten Inhalt der Webseite dynamisch - Python bekommen

benutzen selenium.webdriver sich bei Facebook anzumelden und die HTML-Seite einer öffentlichen Figur, wie z https://www.facebook.com/DonaldTrump/?fref=ts, möchten möglicherweise den Post-Inhalt von dieser Seite crawlen.

Das habe ich gefunden selemium.webdriver, holen Sie sich nur den Inhalt der Webseite im aktuellen Bildschirm, zum Beispiel wenn Sie sich bei Facebook einloggen und den ganzen Webinhalt von bekommen möchten https://www.facebook.com/DonaldTrump/?fref=ts, was ich habe, ist nur die mehrere Post im aktuellen Bildschirm, aber in der Tat, der Post (der Inhalt) auf der Seite https://www.facebook.com/DonaldTrump/?fref=ts sind so viele.

Ich werde das Mausrad so oft rollen, dasSeite kann ihren Grund erreichen, aber jetzt, was ich bekomme, ist nur der begrenzte Inhalt im aktuellen Bildschirm Könnten Sie mir bitte die Lösungsmethode mitteilen, oder mir andere Methoden oder eine andere Bibliothek als Selenium mitteilen, die sich im Facebook einloggen können und den gesamten Inhalt der Zielseite erhalten (nicht nur den Inhalt des aktuellen Bildschirms)?

Das Programm, das ich geschrieben habe, ist:

import requests

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

FACEBOOK_URL_PREFIX = "https://www.facebook.com/"

def web_public_figure(self,p_figure_name):
#delete " " in p_figue_name
p_figure_name_arr = p_figure_name.split(" ")
p_figure_name_str = "".join(p_figure_name_arr)
params = r"/?fref=ts"

p_f_web_url = FACEBOOK_URL_PREFIX + p_figure_name_str + params

# log in the website
login_url = "https://www.facebook.com/login.php?login_attempt=1&lwv=110"
glovar.webdriver_browser = webdriver.Chrome()
glovar.webdriver_browser.get(login_url)

# user credentials
user = glovar.webdriver_browser.find_element_by_css_selector("#email")
user.send_keys("[email protected]")
password = glovar.webdriver_browser.find_element_by_css_selector("#pass")
password.send_keys("expectopatronum")
login = glovar.webdriver_browser.find_element_by_css_selector("#loginbutton")
login.click()
# the login maybe fail, return to the login page
if "login" in glovar.webdriver_browser.current_url:
glovar.webdriver_browser.close()
time.sleep(10)

glovar.webdriver_browser.get(p_f_web_url)
html_p_f_page = glovar.webdriver_browser.page_source

return html_p_f_page

p_figure_name ist "Donald trump", aber die "html_p_page" ist nur der Teil der ganzen Seite:https://www.facebook.com/DonaldTrump/?fref=ts,(only der Teil im aktuellen Bildschirm).

Es scheint auf der Seite, gibt es einen Knopf "see all"Könntest du mir bitte sagen, wie man den ganzen Inhalt einer solchen Seite bekommt, vielleicht mit einer anderen Bibliothek als Selen?

Antworten:

1 für die Antwort № 1

Du kannst es direkt in Selen machen. Es ist nur eine Frage des programmatischen Scrollens der Seite nach unten. Das Problem wird als unendliches Scrollen bezeichnet und ausführlich in diese Antwort.

Im Grunde müssen Sie nur einige Male eine Seite um einen Wert der Höhe nach unten scrollen. So etwas sollte funktionieren, aber ich empfehle Ihnen, den gesamten verlinkten Beitrag zu lesen.

for i in range(1,100):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(4)