Python Селен Многопоточность или Многопроцессорность? - PullRequest
0 голосов
/ 27 марта 2020

Я создал скрипт, который извлекает данные из файла csv ( CSV FILE ) и выполняет следующие задачи: 1- Открыть браузер 2 - Открыть новую вкладку 3 - Найти ссылку (первая строка) 4- Поиск веб-сайта (первый ряд). 5- Закройте браузер. Затем повторите все задачи, приведенные ниже, но со ссылкой и веб-сайтом из второго ряда ... Мой вопрос: возможно ли сделать код для запустить 2 строки на 2 строки (или больше) вместо строки за строкой?

import os
import time

from pynput import mouse, keyboard
import webbrowser
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pyautogui
import csv

keyboard = keyboard.Controller()
mouse = mouse.Controller()

opt = Options()
opt.add_argument("--disable-infobars")
opt.add_argument("start-maximized")
# Pass the argument 1 to allow and 2 to block
opt.add_experimental_option("prefs", {
        "profile.default_content_setting_values.media_stream_mic": 2,
        "profile.default_content_setting_values.media_stream_camera": 2,
        "profile.default_content_setting_values.geolocation": 2,
        "profile.default_content_setting_values.notifications": 2
    })
executable_path = r'C:\Users\Salma\Desktop\Python\chromedriver'
os.environ["webdriver.chrome.driver"] = executable_path
global driver
driver = webdriver.Chrome(r'C:\Users\Salma\Desktop\Python\chromedriver', options=opt)

def seasonbox(website, link):

    # open new tab
    time.sleep(1)
    pyautogui.hotkey('ctrl','t')

    # point tab
    driver.switch_to.window(driver.window_handles[1])

    # browse to link
    time.sleep(3)
    driver.get(link)

    # Search bar
    time.sleep(2)
    driver.find_element_by_css_selector('#tsf > div:nth-child(2) > div.A8SBwf > div.RNNXgb > div > div.a4bIc'
                                        ' > input').send_keys(website)

    # Press enter
    time.sleep(2)
    pyautogui.press('enter')
    time.sleep(3)
    driver.close()

with open(r'C:\Users\Salma\Desktop\scr\data.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            # print(f'Column names are {", ".join(row)}')
            line_count += 1
        else:
            try:
                seasonbox(website=row[0], link=row[1])
                line_count += 1
            except Exception as e:
                print(e)
                line_count += 1
                driver.close()
                with open(r'C:\Users\Salma\Desktop\scr\err.log', 'a') as err_file:
                    err_file.write(
                        '{},{},{},{},{},{},{},{},{}\n\n\n\n\n\n'.format(row[0], row[1]))

                time.sleep(5)
                # close all tab
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...