我正在一个Web抓取项目中,尝试从Amazon网站中提取信息。我要在bdi tag
的无序列表中抓取的元素。要刮擦此信息,我正在使用XPath。
到目前为止,这是我的代码
self.asin.append(self.driver.find_element_by_xpath("//bdi[text()='ASIN']/ancestor::li").text.split(": ")[1])
self.asin是一个列表,其中包含从多个链接中提取的所有ASIN值。
在此link
中查看产品详细信息我只需要ASIN代码本身,而列表中没有其他内容。上面的代码适用于大多数链接,但有时会失败。我尝试添加time.sleep(10)
,但这仍然失败。我检查了代码失败的链接,但是该链接在产品详细信息下确实包含一个ASIN元素。由于页面结构,我觉得只有XPath可以工作。
我在网上寻找解决方案,发现WebDriverWait
含硒,它将等待元素被加载,然后抓取所需的信息。以下代码是我编写的WebDriverWait
try:
next_page_button = WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.CLASS_NAME, 'a-last')))
next_page_button.click()
except TimeoutException:
print("Loading took too much time!")
是否可以将WebDriverWait
与XPath
合并