我使用Python来抓取一个网站,但是我的爬虫停止了,因为有一个例外:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“css选择器”,“选择器”:“id=”priceblock_ourprice“”}
即使元素没有附加,我如何继续爬行?
我的代码:
from selenium import webdriver
browser = webdriver.Chrome()
#Product1
browser.get('https://www.amazon.com.tr/Behringer-High-Precision-Crossover-Limiters-
Adjustable/dp/B07GSGYRK1/ref=sr_1_1?dchild=1&keywords=behringer+cx3400+v2&qid=1630311885&sr=8-
1')
price = price = browser.find_element_by_id('priceblock_ourprice')
price.text
import numpy as np
import pandas as pd
df = pd.DataFrame([["info", "info", price.text]], columns=["Product", "Firm", "Price"])
df.to_csv('info.csv', encoding="utf-8", index=False, header=False)
df_final = pd.read_csv('info.csv')
df_final.head()
browser.quit()
发布于 2021-09-17 07:30:59
如果您想继续刮擦,即使找不到元素,也可以使用try-except
块。
try:
price = browser.find_element_by_id(id_).text
except:
print("Price is not found.")
price = "-" # for dataframe
或者,您可以创建一个函数来检查是否存在并采取相应的行动。一种方法是:
from selenium import webdriver
browser = webdriver.Chrome()
import numpy as np
import pandas as pd
def check_if_exists(browser, id_):
return len(browser.find_elements_by_css_selector("#{}".format(id_))) > 0
browser.get('https://www.amazon.com.tr/Behringer-High-Precision-Crossover-Limiters-Adjustable/dp/B07GSGYRK1/ref=sr_1_1?dchild=1&keywords=behringer+cx3400+v2&qid=1630311885&sr=8-1')
id_ = 'priceblock_ourprice'
price = browser.find_element_by_id(id_).text if check_if_exists(browser, id_) else "-"
df = pd.DataFrame([["info", "info", price]], columns=["Product", "Firm", "Price"])
df.to_csv('info.csv', encoding="utf-8", index=False, header=False)
df_final = pd.read_csv('info.csv')
df_final.head()
browser.quit()
https://stackoverflow.com/questions/69219325
复制相似问题