簡體   English   中英

如何使用python和selenium通過使用load more按鈕的無限滾動來抓取網站

[英]how to scrape websites with infinite scrolling with load more button using python and selenium

我想抓取Facebook的mbasic.facebook.com界面。 它具有加載更多按鈕以向下滾動到新帖子。 我一直在做大量有關Facebook常規界面抓取的研究,並使用Python中的Selenium找到了這個Scraping無限滾動網站

import unittest, time, re

class Sel(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.verificationErrors = []
        self.accept_next_alert = True
    def test_sel(self):
        driver = self.driver
        delay = 3
        driver.get("https://www.facebook.com")
        elem = driver.find_element_by_name("email")
        elem.clear()
        elem.send_keys("")

        elem2 = driver.find_element_by_name("pass")
        elem2.clear()
        elem2.send_keys("")
        elem2.send_keys(Keys.RETURN)
        for i in range(1,100):
            self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            time.sleep(4)
        html_source = driver.page_source
        data = html_source.encode('utf-8')
        print(data)


if __name__ == "__main__":
    unittest.main()

但是我不想循環,而是想觸發一個事件,例如,如果用戶手動按下“加載更多帖子”按鈕,則將加載新頁面,並且我將獲得該頁面的頁面來源。 有什么辦法嗎? 任何幫助,將不勝感激。

那么,您是否在每次加載更多帖子時嘗試獲取頁面源代碼? 因為該代碼無法反映這一點。 假設每次加載新帖子列表時都需要源代碼,則可以使用XPath找到並單擊“更多帖子”按鈕。

for i in range(1, 10):
    driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
    driver.find_element_by_xpath('//span[contains(., "More")]/..').click()
    html_source = driver.page_source
    data = html_source.encode('utf-8')
    print(data)
    sleep(4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM