Я написал скрипт на python в сочетании с селеном, чтобы очистить ссылки различных постов с его целевой страницы и, наконец, получить заголовок каждого поста, отслеживая URL, ведущий к его внутренней странице. Хотя содержимое, которое я здесь проанализировал, является статическим, я использовал селен, чтобы увидеть, как он работает в многопроцессорной среде.
Тем не менее, мое намерение состоит в том, чтобы выполнить очистку с использованием многопроцессорной обработки. Пока я знаю, что селен не поддерживает многопроцессорность, но, похоже, я ошибался.
Мой вопрос: как я могу сократить время выполнения, используя селен, когда он выполняется для многопроцессорной обработки?
This is my try (it a working one)
:
import requests
from urllib.parse import urljoin
from multiprocessing.pool import ThreadPool
from bs4 import BeautifulSoup
from selenium import webdriver
def get_links(link):
res = requests.get(link)
soup = BeautifulSoup(res.text,"lxml")
titles = [urljoin(url,items.get("href")) for items in soup.select(".summary .question-hyperlink")]
return titles
def get_title(url):
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chromeOptions)
driver.get(url)
sauce = BeautifulSoup(driver.page_source,"lxml")
item = sauce.select_one("h1 a").text
print(item)
if __name__ == '__main__':
url = "https://stackoverflow.com/info/tagged/web-scraping"
ThreadPool(5).map(get_title,get_links(url))