【发布时间】:2016-08-07 19:25:14
【问题描述】:
我有一个从 Facebook UID 中抓取好友列表的代码。它有效,但需要很长时间才能抓取整个列表。所以,我想通过使用多处理和 Selenium Grid 来加速它。以下是我使用的方法:
- 用帐号登录 Facebook
- 用相同的缓存和cookie打开5个Firefox实例(所以我不需要再次登录)
- 同时从 5 个不同的 UID 中抓取好友列表。 1 个实例/1 个 UID
这是我的代码,但它不起作用
import multiprocessing
from selenium.common.exceptions import TimeoutException
from bs4 import BeautifulSoup
from selenium import webdriver
def friend_uid_list(uid, driver):
driver.get('https://www.facebook.com/' + uid + '/friends')
//scrape friend list
target.close()
def g(arg):
return friend_uid_list(*arg)
if __name__ == '__main__':
driver = webdriver.Firefox()
driver.get("https://www.facebook.com/")
driver.find_element_by_css_selector("#email").send_keys("email@gmail.com")
driver.find_element_by_css_selector("#pass").send_keys("password")
driver.find_element_by_css_selector("#u_0_m").click()
pool = multiprocessing.Pool(5)
pool.map(g, [(100004159542140,driver),(100004159542140,driver),(100004159542140,driver)])
那么,你能告诉我如何使用 Selenium Grid 同时使用多个实例吗?我搜索了很多,但不知道如何在我的代码中实现它。谢谢你:)
【问题讨论】:
标签: python selenium cookies selenium-grid