首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何忽略(旁路)“无法定位元素”异常?

如何忽略(旁路)“无法定位元素”异常?
EN

Stack Overflow用户
提问于 2021-09-17 07:23:35
回答 1查看 269关注 0票数 0

我使用Python来抓取一个网站,但是我的爬虫停止了,因为有一个例外:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“css选择器”,“选择器”:“id=”priceblock_ourprice“”}

即使元素没有附加,我如何继续爬行?

我的代码:

代码语言:javascript
运行
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-17 07:30:59

如果您想继续刮擦,即使找不到元素,也可以使用try-except块。

代码语言:javascript
运行
复制
try:
   price = browser.find_element_by_id(id_).text
except:
   print("Price is not found.")
   price = "-"     # for dataframe

或者,您可以创建一个函数来检查是否存在并采取相应的行动。一种方法是:

代码语言:javascript
运行
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69219325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档