【发布时间】:2019-01-20 08:18:21
【问题描述】:
我想抓取 facebook 的 mbasic.facebook.com 界面。它具有加载更多按钮以向下滚动到新帖子。我一直在对 facebook 的常规界面抓取进行大量研究,发现了这个 Scraping infinite scrolling website with Selenium in Python
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()
但我不想做一个循环,而是想触发一个事件,比如,如果用户手动按下加载更多帖子按钮,新页面被加载,我得到页面的页面源。有没有办法做到这一点?任何帮助将不胜感激。
【问题讨论】:
-
您是否尝试过更大的窗口尺寸? stackoverflow.com/questions/23381324/…
-
我怎么知道我想要的尺寸?同样,这将是硬编码,就像我在循环中所做的那样。有没有办法手动按下加载更多按钮,然后加载更多帖子?
标签: python selenium web-scraping infinite-scroll event-listener