![](/img/trans.png)
[英]Scrape websites with infinite scrolling using selenium and beautifulsoup return repeated elements
[英]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.