Selenium Webdriver для одновременной работы на нескольких сайтах? - PullRequest
0 голосов
/ 24 марта 2020

Я работаю над созданием webscraping цен на авиабилеты, используя Selenium Webdriver . Я хочу, чтобы мой код мог искать цены на полеты для нескольких поездок. На данный момент мой код работает только для 1 пункта назначения.

Большинство ответов, которые я нахожу в Интернете, включают использование for l oop для указанных c URL-адресов нескольких адресатов, что не применимо к моему случаю, поскольку URL-адреса зависят от различных адресатов, которые я выберите.

Кто-нибудь знает, как я могу искать эти цены одновременно, не дожидаясь завершения отдельных поисков? Или, возможно, еще более быстрый способ сделать это?

Спасибо!

1 Ответ

0 голосов
/ 24 марта 2020

Полагаю, вы могли бы использовать MultiPoolProcess для одновременной загрузки рейсов. Вот пример, который я работал с селеном:

Скрипт для оправдания вашей функции селена:

# MultiProcess
from subprocess import Popen
from concurrent.futures import ProcessPoolExecutor, wait, FIRST_EXCEPTION, as_completed

urls = [url1, url2, url3]
N = 4 # Number of processors that you want to use

# Execute each bot
with ProcessPoolExecutor(N) as executor:
    for url in urls:
        command = ["python", "mySeleniumScript.py", url]
        future = executor.submit(Popen,command)
        self.futures.append(future)

В этом случае ваш python скрипт, содержащий селен скребок должен проанализировать URL-адрес из ввода. Вот так:

mySeleniumScript.py

from selenium import webdriver
import sys

url = sys.argv[1]
driver = webdriver.Firefox()
driver.get(url)

*** Your scrapper logic here ***

Надеюсь, что вы укажете верное направление, дайте мне знать, как все прошло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...