我从谷歌找到了一些信息,但不完全是我需要的。
我们注意到我们的脚本在运行期间打开了 ~9 个 chrome 实例。我们希望它只使用一个,然后在同一会话中进入下一部分(或最多 2 个实例)。
#!/usr/bin/python
# - Import Tools
import datetime
import time
import mysql.connector
from datetime import datetime
from discord_webhook import DiscordWebhook
from discord_webhook import DiscordWebhook, DiscordEmbed
from selenium import webdriver
import time
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver import ActionChains
from selenium.common.exceptions import NoSuchElementException
prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = "http://N1Proxy:[email protected]:12321"
prox.ssl_proxy = "http://N1Proxy:[email protected]:12321"
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
ser = Service(r"/bin/chromedriver.exe")
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
# options.add_argument("--headless=new")
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(desired_capabilities=capabilities, options=options)
BP_Link = 'https://www.brokenplanetmarket.com/shop'
PALACE_Link = 'https://shop.palaceskateboards.com/collections/new'
BROKEN_PLANET = []
driver.get(BP_Link)
time.sleep(2)
elements = driver.find_elements(
By.XPATH, value='//div[@class="MuiPaper-root MuiCard-root sc-HzFiz fXFQsJ MuiPaper-elevation0 MuiPaper-rounded"]/h6[2]')
for element in elements:
actionChains = ActionChains(driver)
actionChains.move_to_element(element).perform()
product_name = driver.find_elements(
By.XPATH, value='//div[@class="MuiPaper-root MuiCard-root sc-HzFiz fXFQsJ MuiPaper-elevation0 MuiPaper-rounded"]/h6[1]')
product_price = driver.find_elements(
By.XPATH, value='//div[@class="MuiPaper-root MuiCard-root sc-HzFiz fXFQsJ MuiPaper-elevation0 MuiPaper-rounded"]/h6[2]')
product_sizes = driver.find_elements(
By.XPATH, value='//div[@class="sc-dkdnUF dGdejh"]/ul')
product_image = driver.find_elements(
By.XPATH, value='//div[@class="sc-bWXABl kVmUNz"]/img')
product_link = driver.find_elements(
By.XPATH, value='//a[@class="sc-fIavCj cKFnDV"]')
for i in range(len(product_name)):
Name = product_name[i].text
Price = product_price[i].text.replace('£', "")
Price_GBP = '£ ' + Price
Sizes = product_sizes[i].text
Link = product_link[i].get_attribute('href')
Image = product_image[i].get_attribute('currentSrc')
print(Name, "-", Price_GBP, "-", Sizes.split(), "-", Link, "-", Image)
##########################----PALACE----################################
PALACE = []
driver.get(PALACE_Link)
time.sleep(2)
Link_list = []
Links = driver.find_elements(
By.XPATH, value='//div[@class="product-grid-item clearfix"]/a[1]')
for Link in Links:
Link_list.append(Link.get_attribute('href'))
for Link in Link_list:
driver.get(Link)
product_name = driver.find_element(
By.XPATH, value = '//div[@id="content"]/div/div[2]/h1')
try:
product_price = driver.find_element(
By.XPATH, value = '//h3[@class="product-price"]/span').text.replace('£', "")
except NoSuchElementException:
product_price = 'Sold out'
product_image = driver.find_element(
By.XPATH, value = '//div[@class="product-images"]/div[1]/div[1]/div[1]/img[1]')
try:
product_sizes = driver.find_element(
By.XPATH, value = '//div[@id="product-variants"]/div[1]/select').text
except NoSuchElementException:
product_sizes = 'Out of stock'
Name = (product_name).text
Price = (product_price)
Link = Link
Image = (product_image).get_attribute('src')
Sizes = (product_sizes)
print(Name, "-", Price, "-", Link, "-", Image, "-", Sizes.split())
driver.quit()
我们如何在一个或两个浏览器实例中运行它而不是打开多个?