「こんにちは」という単語をグーグル検索したいとしましょう。次に、Google の最初の 100 ページのすべてのリンクにアクセスし、そのリンクされたページの HTML をダウンロードします。1 ページあたり 10 件の結果があるため、約 1,000 件のリンクをクリックする必要があります。
これは、単一のプロセスで行う方法です。
from selenium import webdriver
driver=webdriver.Firefox()
driver.get('http://google.com')
# do the search
search = driver.find_element_by_name('q')
search.send_keys('hello')
search.submit()
# click all the items
links_on_page = driver.find_elements_by_xpath('//li/div/h3/a')
for item in links_on_page:
item.click()
# do something on the page
driver.back()
# go to the next page
driver.find_element_by_xpath('//*[@id="pnnext"]')
これを 100 ページで行うには、明らかに非常に長い時間がかかります。(たとえば) 3 つのドライバーを開き、それぞれがページを「チェックアウト」するように、負荷を分散するにはどうすればよいでしょうか。例えば:
- ドライバー #1 はページ 1 をチェックアウトします。ページ 1 を開始します。
- ドライバー #2 は、ページ 1 がチェックアウトされていることを確認し、ページ #2 に移動します。ページ 2 を開始します。
- ドライバー #3 は、ページ 1 がチェックアウトされていることを確認し、ページ #2 に移動します。2ページ目も同様。3ページ目から。
- ドライバー #1 はページ 1 で作業を終了し、ページ 4 を開始します。
これがどのように機能するかの原則は理解していますが、これを機能させる基本的な実装を取得するための実際のコードは何でしょうか?