我正试着从'https://www.velocityap.com/product/3-0l-v6-supercharged-jaguar-land-rover-aj126-ecu-tuning/‘网站上抓取数据。为此,需要单击一组单选按钮,以显示需要刮掉的汽车部件的价格(下图红色标记的价格)。

我编写的代码如下所示:
options_panel_4 = driver.find_elements(By.CSS_SELECTOR,'div.summary.entry-summary > div.mspc-wrapper.mspc-clearfix.mspc-module-accordion.mspc-auto-next.mspc-step-by-step > div > div:nth-child(8) > div > div')
print('Options under options panel 3 :', len(options_panel_4))
for option_4 in options_panel_4:
driver.execute_script("arguments[0].scrollIntoView();", option_4)
option_4.find_element(By.CSS_SELECTOR, 'div > div.mspc-radio.ui.radio.checkbox > input[type=radio]').click()然而,它抛出的异常如下:
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div class="mspc-radio ui radio checkbox">...</div> is not clickable at point (890, 14). Other element would receive the click: <div class="infinite-navigation infinite-item-pdlr clearfix infinite-navigation-submenu-indicator ">...</div>
(Session info: chrome=102.0.5005.115)
Stacktrace:
0 chromedriver 0x00000001024162c9 chromedriver + 5120713
1 chromedriver 0x00000001023a4e33 chromedriver + 4656691
2 chromedriver 0x0000000101f94158 chromedriver + 393560
3 chromedriver 0x0000000101fd0638 chromedriver + 640568
4 chromedriver 0x0000000101fce1b3 chromedriver + 631219
5 chromedriver 0x0000000101fcb814 chromedriver + 620564
6 chromedriver 0x0000000101fca5b2 chromedriver + 615858
7 chromedriver 0x0000000101fbe249 chromedriver + 565833
8 chromedriver 0x0000000101fe6482 chromedriver + 730242
9 chromedriver 0x0000000101fbdb05 chromedriver + 563973
10 chromedriver 0x0000000101fe658e chromedriver + 730510
11 chromedriver 0x0000000101ff8f41 chromedriver + 806721
12 chromedriver 0x0000000101fe6373 chromedriver + 729971
13 chromedriver 0x0000000101fbc609 chromedriver + 558601
14 chromedriver 0x0000000101fbd635 chromedriver + 562741
15 chromedriver 0x00000001023e8b1d chromedriver + 4934429
16 chromedriver 0x00000001023ed295 chromedriver + 4952725
17 chromedriver 0x00000001023f23cf chromedriver + 4973519
18 chromedriver 0x00000001023edcba chromedriver + 4955322
19 chromedriver 0x00000001023c837c chromedriver + 4801404
20 chromedriver 0x0000000102407c68 chromedriver + 5061736
21 chromedriver 0x0000000102407def chromedriver + 5062127
22 chromedriver 0x000000010241d5e5 chromedriver + 5150181
23 libsystem_pthread.dylib 0x00007ff80f3874e1 _pthread_start + 125
24 libsystem_pthread.dylib 0x00007ff80f382f6b thread_start + 15发布于 2022-06-14 09:45:04
错误代码告诉您的是,问题是当您向下滚动时,顶部菜单将覆盖无线电输入。所以,如果它在哪里点击它,它就不会点击收音机--它会点击菜单。
另外,它不允许您选择收音机本身,您必须选择一个特定的div,下面是这个/html/body/div3/div/div4/div2/div/div2/div2/div2/div/div4/div/div2的xpath
我做了一个快速尝试,手动滚动并手动选择前面的单选按钮,它正确地选择了最后一个有问题的地方,下面是代码:
import time
from selenium import webdriver
driver = webdriver.Chrome(executable_path = "chromedriver.exe")
driver.get("https://www.velocityap.com/product/3-0l-v6-supercharged-jaguar-land-rover-aj126-ecu-tuning/")
options_panel_4 = driver.find_elements_by_css_selector('div.summary.entry-summary > div.mspc-wrapper.mspc-clearfix.mspc-module-accordion.mspc-auto-next.mspc-step-by-step > div > div:nth-child(8) > div > div')
time.sleep(15)
print('Options under options panel 3 :', len(options_panel_4))
for option_4 in options_panel_4:
option_4.find_element_by_xpath('/html/body/div[3]/div/div[4]/div[2]/div/div[2]/div[2]/div[2]/div/div[4]/div/div[2]').click()我使用xpath是因为我预先准备了它,但这并不意味着您也必须这样做。我还添加了等待加载的等待时间,并选择了前面的单选按钮。
发布于 2022-06-14 08:42:56
由于您希望获得所有产品的数据,所以我将获得所有的复选框的xpath,例如‘// get @type=“radio”和@value=“jaguar-f-type-”。当我拥有所有的xpath时,我将执行一个脚本来选择所有的选项,并且我将完成这个xpath '//*@class="price"/descendant::span@class="woocommerce-Price-amount数量的文本“‘
https://stackoverflow.com/questions/72612343
复制相似问题