如何使用 selenium 和 python 一次打印 2 个值?
How to print 2 values at once with selenium and python?
我希望每个人都过得愉快。我正在尝试从网站中提取值并将它们作为列表打印出来,但我不知道该怎么做。我按预期打印了所有值,只是不知道如何让它们一个接一个地打印。我知道这是一个非常基本的问题,但我无法弄清楚。任何建议或信息表示赞赏!谢谢!
import time
import webbrowser
from os import O_SEQUENTIAL, link
import chromedriver_autoinstaller
from selenium import webdriver as wd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
webdriver = wd.Chrome(executable_path= r"C:\Users\Stephanie\anaconda3\pkgs\python-chromedriver-binary-98.0.4758.48.0-py39hcbf5309_0\Lib\site-packages\chromedriver_binary\chromedriver.exe")
webdriver.implicitly_wait(1)
webdriver.maximize_window()
webdriver.get("https://pcpartpicker.com/user/stephwaters/saved/#view=HgH2xr")
time.sleep(2)
partname = webdriver.find_elements(By.CLASS_NAME, 'td__component')
for part in partname:
print(part.text + ': ')
prices = webdriver.find_elements(By.CLASS_NAME, 'td__price')
for price in prices:
print(price.text)
这是输出:
我希望它打印:
案例:168.99 美元
电源:182.00 美元
等等。
无需分别获取 partnames
和 prices
,您可以遍历产品列表,从每个产品中提取其名称和价格。
此外,建议使用 Expected Conditions 显式等待,而不是硬编码的暂停。
您的代码可能是这样的:
import time
import webbrowser
from os import O_SEQUENTIAL, link
import chromedriver_autoinstaller
from selenium import webdriver as wd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
webdriver = wd.Chrome(executable_path= r"C:\Users\Stephanie\anaconda3\pkgs\python-chromedriver-binary-98.0.4758.48.0-py39hcbf5309_0\Lib\site-packages\chromedriver_binary\chromedriver.exe")
wait = WebDriverWait(webdriver, 20)
webdriver.maximize_window()
webdriver.get("https://pcpartpicker.com/user/stephwaters/saved/#view=HgH2xr")
wait.until(EC.visibility_of_element_located((By.XPATH, "//tr[@class='tr__product']")))
time.sleep(0.3) #short delay added to make sure not the first product only got loaded
products = = webdriver.find_elements(By.XPATH, '//tr[@class="tr__product"]')
for product in products:
name = product.find_element(By.XPATH, './/td[@class="td__component"]')
price = product.find_element(By.XPATH, './/td[@class="td__price"]//a')
print(name.text + ': ' + price.text)
我希望每个人都过得愉快。我正在尝试从网站中提取值并将它们作为列表打印出来,但我不知道该怎么做。我按预期打印了所有值,只是不知道如何让它们一个接一个地打印。我知道这是一个非常基本的问题,但我无法弄清楚。任何建议或信息表示赞赏!谢谢!
import time
import webbrowser
from os import O_SEQUENTIAL, link
import chromedriver_autoinstaller
from selenium import webdriver as wd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
webdriver = wd.Chrome(executable_path= r"C:\Users\Stephanie\anaconda3\pkgs\python-chromedriver-binary-98.0.4758.48.0-py39hcbf5309_0\Lib\site-packages\chromedriver_binary\chromedriver.exe")
webdriver.implicitly_wait(1)
webdriver.maximize_window()
webdriver.get("https://pcpartpicker.com/user/stephwaters/saved/#view=HgH2xr")
time.sleep(2)
partname = webdriver.find_elements(By.CLASS_NAME, 'td__component')
for part in partname:
print(part.text + ': ')
prices = webdriver.find_elements(By.CLASS_NAME, 'td__price')
for price in prices:
print(price.text)
这是输出:
我希望它打印: 案例:168.99 美元 电源:182.00 美元
等等。
无需分别获取 partnames
和 prices
,您可以遍历产品列表,从每个产品中提取其名称和价格。
此外,建议使用 Expected Conditions 显式等待,而不是硬编码的暂停。
您的代码可能是这样的:
import time
import webbrowser
from os import O_SEQUENTIAL, link
import chromedriver_autoinstaller
from selenium import webdriver as wd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
webdriver = wd.Chrome(executable_path= r"C:\Users\Stephanie\anaconda3\pkgs\python-chromedriver-binary-98.0.4758.48.0-py39hcbf5309_0\Lib\site-packages\chromedriver_binary\chromedriver.exe")
wait = WebDriverWait(webdriver, 20)
webdriver.maximize_window()
webdriver.get("https://pcpartpicker.com/user/stephwaters/saved/#view=HgH2xr")
wait.until(EC.visibility_of_element_located((By.XPATH, "//tr[@class='tr__product']")))
time.sleep(0.3) #short delay added to make sure not the first product only got loaded
products = = webdriver.find_elements(By.XPATH, '//tr[@class="tr__product"]')
for product in products:
name = product.find_element(By.XPATH, './/td[@class="td__component"]')
price = product.find_element(By.XPATH, './/td[@class="td__price"]//a')
print(name.text + ': ' + price.text)