python如何获取网页的所有内容动态

问题描述:

使用selenium.webdriver登录Facebook并获取公众人物的HTML页面(如https://www.facebook.com/DonaldTrump/?fref=ts)可能需要从该页面抓取发布的内容。python如何获取网页的所有内容动态

我发现,使用selemium.webdriver,只得到网页的内容在当前屏幕中,例如,当登录Facebook和想要得到的https://www.facebook.com/DonaldTrump/?fref=ts的所有网页内容,我得到的仅仅是几个后在当前屏幕中,但实际上,页面https://www.facebook.com/DonaldTrump/?fref=ts中的帖子(内容)非常多。

我会滚动鼠标滚轮这么多次,网页可以达到它的底部,但现在我得到的是只有在当前屏幕 有限的内容,你可以告诉我解决的方法,或者告诉我其他方法或除了硒库,可以登录facebbook并获得目标页面的所有内容(不仅在当前屏幕上的内容)

,我写的程序是:

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"Donald trump",但"html_p_page"只是整个页面的一部分: https://www.facebook.com/DonaldTrump/?fref=ts,(only当前屏幕中的部分)。

似乎在页面上有按钮"see all",你能告诉我怎么去这样一个网页上的所有内容,也许使用图书馆以外硒

您可以直接硒做到这一点。这只是以编程方式向下滚动页面的问题。这个问题被称为无限滚动,广泛描述在this answer

基本上,你只需要让一个页面向下滚动一个高度值几次。像这样的东西应该这样做,但我建议你阅读整个链接的帖子。

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

给Jahooo,请你直接修改我的程序,因此,我可以清楚地看到它 – bin