from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from time import sleep
import threading
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
sem = threading.Semaphore(2) # 限制线程的最大数量
url = 'https://www.baidu.com/'
keys = ['java', 'python', 'go']
def search(driver,keyword):
wait = WebDriverWait(driver, 5)
el_location = wait.until(EC.presence_of_element_located((By.ID,"kw")))
el_location.clear()
el_location.send_keys(keyword)
el_location = wait.until(EC.presence_of_element_located((By.ID, "su")))
el_location.click()
sleep(2)
def browser_work(keyword):
options = Options()
#options.add_argument('--headless')
options.add_argument("--no-sandbox")
options.add_argument('--disable-gpu')
options.add_argument('window-size=1920x1080')
browser = webdriver.Chrome(options=options)
browser.get(url)
print('browser is working...')
search(browser,keyword)
sleep(1)
browser.quit()
def run_thread(k):
with sem: # 锁定线程的最大数量
print(threading.current_thread().name, k)
print('-' * 20)
browser_work(k)
#sleep(1)
print('*' * 20)
ts=[]
for k in keys:
t = threading.Thread(target=run_thread,args=(k,))
ts.append(t)
t.start()
for t in ts:
t.join()
Thread-1 java
--------------------
Thread-2 python
--------------------
browser is working...
browser is working...
********************
Thread-3 go
--------------------
********************
browser is working...
********************
网友评论