Python 完成循环后使用Selenium关闭浏览器
我有下面的脚本从iHerbs中获取数据。 但是,即使我将Python 完成循环后使用Selenium关闭浏览器,python,selenium,web-scraping,selenium-chromedriver,Python,Selenium,Web Scraping,Selenium Chromedriver,我有下面的脚本从iHerbs中获取数据。 但是,即使我将driver.close()放在第24项之后,它也可以停止,但它仍然会不断地抓取数据,并且不会停止 完成第24项后停止循环并关闭浏览器的任何解决方案 非常感谢你 请检查以下脚本: import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.suppo
driver.close()
放在第24项之后,它也可以停止,但它仍然会不断地抓取数据,并且不会停止
完成第24项后停止循环并关闭浏览器的任何解决方案
非常感谢你
请检查以下脚本:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(chrome_path)
driver.get("https://ca.iherb.com/c/Vitamins?noi=24")
wait = WebDriverWait(driver, 10)
#close the pop up
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"svg[data-ga-event-action='list-close']"))).click()
#store all the links in a list
item_links = [item.get_attribute("href") for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,".absolute-link-wrapper > a.product-link")))]
review_titles= list()
review_contents = list()
product_helpful= list()
product_not_helpful = list()
member_rating = list()
total_rate = list()
#iterate over the links
for item_link in item_links:
driver.get(item_link)
#locate and click on the `View All Reviews` link
all_reviews_link = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"span.all-reviews-link > a")))
x = all_reviews_link.get_attribute("href")
MAX_PAGE_NUM = 2
for i in range(1, MAX_PAGE_NUM + 1):
page_num = str(i)
url = x +'?&p='+ page_num
print(url)
driver.get(url)
review_containers = driver.find_elements_by_class_name('review-row')
for containers in review_containers:
total_rate.append(driver.find_element_by_class_name('css-i36p8g').text)
review_contents.append(containers.find_element_by_class_name('review-text').text)
product_helpful.append(containers.find_element_by_css_selector('[title="Helpful"] span').text)
product_not_helpful.append(containers.find_element_by_css_selector('[title="Unhelpful"] span').text)
stars = containers.find_elements_by_class_name("css-172co2l")
rating = 0
for star in stars:
star_color = star.find_element_by_tag_name("path").get_attribute("fill")
#print(star_color)
if star_color != "transparent":
rating += 1
member_rating.append(rating)
time.sleep(5) #slow the script down
driver.close()
进口:
import os
删除“browser.close()”并添加
您可以尝试
driver.quit()
。这将关闭使用Selenium打开的所有浏览器。.close()
关闭一个使用Selenium打开的浏览器。两者都仍然有效,但如果后者不起作用,则尝试前者
有关详细信息,您可以查看此尝试
driver.close()
而不是browser.close()
是的,谢谢您,但它不起作用。谢谢您的建议,但它不起作用,而且它不断随机获取更多页面谢谢您的帮助
os.system("taskkill /im chromedriver.exe")