我正在使用selenium抓取一个网站“ https://www.medline.com/catalog/category-
products.jsp?itemId=Z05-CA02_03&N=111079+4294770643&iclp=Z05-CA02_03
”
对于单页和单个产品,我可以通过传递产品网址来进行抓取,但是我试图通过selenium来做到这一点,即在逐个选择所有产品后自动选择产品页面,并且应该移至下一页并在打开后产品详细信息页面应该刮掉,这是由美丽的汤完成的,这里是基本URL中的产品URL“
https://www.medline.com/product/SensiCare-Powder-Free-Nitrile-Exam-
Gloves/SensiCare/Z05-PF00342 ?question =&index = P1&indexCount =
1 “
这是我的代码:
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(executable_path='C:/Users/ptiwar34/Documents/chromedriver.exe', chrome_options=chromeOptions, desired_capabilities=chromeOptions.to_capabilities())
driver.get("https://www.medline.com/catalog/category-products.jsp?itemId=Z05-CA02_03&N=111079+4294770643&iclp=Z05-CA02_03")
while True:
try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class, 'resultGalleryViewRow')]//div[@class='medGridProdTitle']//a[contains(@href]"))).click()
print("Clicked for next page")
except TimeoutException:
print("No more pages")
break
driver.quit()
在这里它不会引发错误
它没有打开每个产品的页面,我想在新选项卡中打开每个产品,在将其废弃后删除并打开新产品的新选项卡
从网页https://www.medline.com/catalog/category- products.jsp?itemId=Z05-CA02_03&N=111079+4294770643&iclp=Z05-CA02_03
中打开每个产品的
新html" target="_blank">标签,并取消它,你必须诱导_WebDriverWait_的number_of_windows_to_be(2)
,你可以使用下面的[定位策略:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("start-maximized")
driver = webdriver.Chrome(options=chrome_options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get("https://www.medline.com/catalog/category-products.jsp?itemId=Z05-CA02_03&N=111079+4294770643&iclp=Z05-CA02_03")
my_hrefs = [my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[contains(@class, 'resultGalleryViewRow')]//div[@class='medGridProdTitle']//a")))]
windows_before = driver.current_window_handle # Store the parent_window_handle for future use
for my_href in my_hrefs:
driver.execute_script("window.open('" + my_href +"');")
WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2)) # Induce WebDriverWait for the number_of_windows_to_be 2
windows_after = driver.window_handles
new_window = [x for x in windows_after if x != windows_before][0] # Identify the newly opened window
driver.switch_to.window(new_window) # switch_to the new window
time.sleep(3) # perform your webscrapping here
print(driver.title) # print the page title or your perform your webscrapping
driver.close() # close the window
driver.switch_to.window(windows_before) # switch_to the parent_window_handle
driver.quit() #quit your program
SensiCare Powder-Free Nitrile Exam Gloves | Medline Industries, Inc.
MediGuard Vinyl Synthetic Exam Gloves | Medline Industries, Inc.
CURAD Stretch Vinyl Exam Gloves | Medline Industries, Inc.
CURAD Nitrile Exam Gloves | Medline Industries, Inc.
SensiCare Ice Blue Powder-Free Nitrile Exam Gloves | Medline Industries, Inc.
MediGuard Synthetic Exam Gloves | Medline Industries, Inc.
Accutouch Synthetic Exam Gloves | Medline Industries, Inc.
Aloetouch Ice Powder-Free Nitrile Exam Gloves | Medline Industries, Inc.
Aloetouch 3G Powder-Free Synthetic Exam Gloves | Medline Industries, Inc.
SensiCare Powder-Free Stretch Vinyl Sterile Exam Gloves | Medline Industries, Inc.
CURAD Powder-Free Textured Latex Exam Gloves | Medline Industries, Inc.
Accutouch Chemo Nitrile Exam Gloves | Medline Industries, Inc.
Aloetouch 12" Powder-Free Nitrile Exam Gloves | Medline Industries, Inc.
Ultra Stretch Synthetic Exam Gloves | Medline Industries, Inc.
Generation Pink 3G Synthetic Exam Gloves | Medline Industries, Inc.
SensiCare Extended Cuff Powder-Free Nitrile Exam Gloves | Medline Industries, Inc.
Eudermic MP High-Risk Powder-Free Latex Exam Gloves | Medline Industries, Inc.
Aloetouch Powder-Free Latex Exam Gloves | Medline Industries, Inc.
CURAD Powder-Free Nitrile Exam Gloves | Medline Industries, Inc.
Medline Sterile Powder-Free Latex Exam Gloves | Medline Industries, Inc.
SensiCare Silk Powder-Free Nitrile Exam Gloves | Medline Industries, Inc.
Medline Sterile Powder-Free Latex Exam Glove Pairs | Medline Industries, Inc.
MediGuard 2.0 Nitrile Exam Gloves | Medline Industries, Inc.
Designer Boxed Vinyl Exam Gloves | Medline Industries, Inc.
我正在使用selenium“https://www.medline.com/catalog/category-products.jsp?itemid=Z05-CA02_03&n=111079+4294770643&iclp=Z05-CA02_03”搜索一个网站 它不打开每一个产品的页面,我想在新的标签打开每一个产品,刮掉它后删除并打开新的标签为一个新的产品
问题内容: 因此,我试图在WebDriver内的新选项卡上打开网站。我想这样做,因为使用PhantomJS为每个网站打开一个新的WebDriver大约需要3.5秒,所以我想提高速度… 我正在使用多进程python脚本,并且我想从每个页面中获取一些元素,因此工作流程如下: 但是我找不到任何方法来实现这一目标。 这是我正在使用的代码。网站之间永远都需要花时间,我需要它很快。允许使用其他工具,但是我不知
在将此标记为重复之前。请阅读问题。这种问题我见过很多回答。但是没有一个真的管用。 这是我的代码。当我运行这个而不是打开一个新选项卡时,它只会在当前选项卡中打开。我如何才能在新选项卡中打开第二个链接?
问题内容: 我有检查网站的程序,我想知道如何通过Python中的代理检查它… 这是代码,例如 问题答案: 默认情况下,使用环境变量来确定要使用的HTTP代理: 如果您想在应用程序内部指定代理,则可以给以下参数提供一个参数: 编辑: 如果我正确理解您的评论,则您想尝试多个代理并在尝试时打印每个代理。这样的事情怎么样?
问题内容: 自从将近一个月以来,我一直在使用CasperJS测试框架来制作一些测试套件,但是其中之一面临着一个问题。 这是我要执行的操作:我正在浏览一个url(第1页),并且必须从另一个url(像在图形浏览器中那样模拟新选项卡)执行另一个操作,而不必退出第一个(第1页)。来自第二个URL的操作将更改我的第一个URL。希望它足够清楚:) 因此,现在,当我到达观察第一个URL的步骤时,我通过执行操作打
问题内容: 我想使用Selenium WebDriver和Python在不同的选项卡中打开很多URL。 我不确定出了什么问题: 我查阅了教程,在我看来,这段代码应该可以实现我想要的功能。实际发生的情况是打开浏览器,打开url1,打开一个新标签, 但是 url2然后加载到原始标签中,而不是新标签中(即使新标签似乎是活动的)。 (我使用的是Chrome,因为使用Firefox时我根本无法加载任何URL