Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 问题爬行亚马逊,元素无法滚动到视图中_Python_Selenium_Web Scraping_Web Crawler_Screen Scraping - Fatal编程技术网

Python 问题爬行亚马逊,元素无法滚动到视图中

Python 问题爬行亚马逊,元素无法滚动到视图中,python,selenium,web-scraping,web-crawler,screen-scraping,Python,Selenium,Web Scraping,Web Crawler,Screen Scraping,我在亚马逊上的网页爬网有问题 我试过使用: 执行JS脚本 作用链 显式等待 似乎什么都不管用。每件事都会引发一个异常或错误 基本脚本 尝试#1:执行JS 剧本 错误 元素无法滚动到视图中 尝试#2:行动链 剧本 错误 TypeError:rect未定义 尝试#3:显式等待 我也尝试过使用element\u可点击。这两个都会超时。这是因为您试图处理隐藏链接。试试下面 next_button = ff.find_element_by_partial_link_text('Next') next_

我在亚马逊上的网页爬网有问题

我试过使用:

  • 执行JS脚本
  • 作用链
  • 显式等待
似乎什么都不管用。每件事都会引发一个异常或错误

基本脚本 尝试#1:执行JS 剧本

错误

元素无法滚动到视图中

尝试#2:行动链 剧本

错误

TypeError:rect未定义

尝试#3:显式等待
我也尝试过使用
element\u可点击
。这两个都会超时。

这是因为您试图处理隐藏链接。试试下面

next_button = ff.find_element_by_partial_link_text('Next')
next_button.click()

请注意,
通过部分链接文本查找元素
/
通过链接文本查找元素
仅搜索可见链接

你也可能需要打电话

ff.implicitly_wait(10)
在脚本中(WebDriver实例定义之后的某个地方)或按如下所示使用

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

next_button = WebDriverWait(ff, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next→')))

确保即使渲染延迟也能找到所需元素

,但按钮在DOM中可见,而不是隐藏?!?!那么为什么我的方法不起作用呢?不。由
//li/a[contains(text(),“Next”)][1]
找到的按钮位于
div
内部,类名
隐藏。请注意,XPath中的索引
[1]
表示第一。如果要处理第二个(可见)链接,应使用
//li/a[contains(text(),“Next”)][2]
。但正如我所说,按链接文本搜索更可靠,因为它会忽略所有隐藏的链接…你错了,只有
[2]
的父级具有
隐藏的
,所以
(//li/a[contains(text(),“Next”)][1]
不起作用???
(//li/a[contains(text(),“Next”))[1]
在查找链接时没有问题,但由于某些原因,它无法滚动到视图中…不知道为什么您仍然不同意。第一个链接显然是隐藏的,第二个链接是可见的。如果您不相信我,请尝试
print(dr.find_element_by_xpath('(//li/a[contains(text(),“Next”))[1])。is_display())
print(dr.find_element_by_xpath('(//li/a[contains(text(),“Next”)))[2])。is_display())
next_button = WebDriverWait(ff, 60).until(
    EC.visibility_of_element_located((By.XPATH, '(//li/a[contains(text(), "Next")])[1]'))
)
next_button = ff.find_element_by_partial_link_text('Next')
next_button.click()
next _button = ff.find_element_by_link_text('Next→')
ff.implicitly_wait(10)
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

next_button = WebDriverWait(ff, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next→')))