Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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
如何在提供JavaScript数据的页面上执行Scrapy和Selenium?_Javascript_Selenium_Scrapy - Fatal编程技术网

如何在提供JavaScript数据的页面上执行Scrapy和Selenium?

如何在提供JavaScript数据的页面上执行Scrapy和Selenium?,javascript,selenium,scrapy,Javascript,Selenium,Scrapy,我正在制作一个刮刀,它可以在这样的地方工作-> 访问站点A-->单击“立即购买”按钮-->登陆亚马逊-->刮取数据-->返回站点A 问题是这个网站是在AnugularJS上制作的。我无法使用selenium单击按钮。单击() 我正在使用selenium和scrapy来清理这个javascript页面。 该页面为无限加载页面,请建议一种适用于无限加载页面的解决方案 这是Div元素- <a class="external" href="http://www.amazon.com/dp/B01D

我正在制作一个刮刀,它可以在这样的地方工作->

访问站点A-->单击“立即购买”按钮-->登陆亚马逊-->刮取数据-->返回站点A

问题是这个网站是在AnugularJS上制作的。我无法使用selenium单击按钮。单击()

我正在使用selenium和scrapy来清理这个javascript页面。 该页面为无限加载页面,请建议一种适用于无限加载页面的解决方案

这是Div元素-

<a class="external" href="http://www.amazon.com/dp/B01DBR53FU/?tag=097-20&amp;ascsubtag=v7_3_3_3m7_2nhz_0_x01_-srt5-" target="_blank" analytics-on="click" analytics-event="button" analytics-category="outbound" analytics-label="non-lethal-salt-firing-self-defense-gun" ng-click="click(post)" rel="nofollow">Check it out </a>
它返回

'SelectorList' object has no attribute 'click'

您可以使用以下任一CSS选择器:

".external"
或者通过使用链接文本

"Check it out" 

您可以使用以下任一CSS选择器:

".external"
或者通过使用链接文本

"Check it out" 
这意味着
click
方法将无法处理xpath返回的元素

试试这个-在Python中

    element_to_click = self.driver.find_element_by_css_selector('a.external')
 driver.execute_script("arguments[0].scrollIntoView(true);",element_to_click)
    element_to_click.click()

您可以使用另一个答案中提到的链接文本

编辑3:尝试将JS单击发送到此定位器

driver.execute_script("arguments[0].click();",element_to_click) 
编辑4:请仔细查看此编辑。点击此页面上的任何礼品都非常简单

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chrome_path  = 'your chromedriver path here'


driver = webdriver.Chrome(chrome_path)

driver.get("http://thisiswhyimbroke.com/gifts/gifts-for-men/")
time.sleep(5)

#clicks on the first gift article
first_article = driver.find_element_by_css_selector('#page-gifts > article:nth-child(1) > div.button > a')
first_article.click()
time.sleep(5)
所有提到的礼品都是由一个
转发器生成的,因为这是一个有角度的网页。显示的所有礼物都位于
物品
标签内

如果要单击第二个或第三个或任何其他文章按钮,只需更改
文章:第n个子项
,即可获得相应的子项,此代码将起作用

在开始自动化之前,请先简单阅读一下如何创建、使用定位器,然后再开始自动化

这意味着
click
方法将无法处理xpath返回的元素

试试这个-在Python中

    element_to_click = self.driver.find_element_by_css_selector('a.external')
 driver.execute_script("arguments[0].scrollIntoView(true);",element_to_click)
    element_to_click.click()

您可以使用另一个答案中提到的链接文本

编辑3:尝试将JS单击发送到此定位器

driver.execute_script("arguments[0].click();",element_to_click) 
编辑4:请仔细查看此编辑。点击此页面上的任何礼品都非常简单

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chrome_path  = 'your chromedriver path here'


driver = webdriver.Chrome(chrome_path)

driver.get("http://thisiswhyimbroke.com/gifts/gifts-for-men/")
time.sleep(5)

#clicks on the first gift article
first_article = driver.find_element_by_css_selector('#page-gifts > article:nth-child(1) > div.button > a')
first_article.click()
time.sleep(5)
所有提到的礼品都是由一个
转发器生成的,因为这是一个有角度的网页。显示的所有礼物都位于
物品
标签内

如果要单击第二个或第三个或任何其他文章按钮,只需更改
文章:第n个子项
,即可获得相应的子项,此代码将起作用



在开始自动化之前,请先简要阅读一下如何创建、使用定位器,然后再开始自动化。

您使用的是Python或Java的语言绑定是什么?您使用的是Python或Java的语言绑定是什么?
element\u to\u click.click()
给出此错误-
元素不可交互异常:消息:元素无法滚动到视图中
很抱歉,先生,它仍然给出相同的错误
元素无法滚动到视图中
先生知道我为什么不能单击按钮吗?
驱动程序。通过css\u选择器(“a.external”)查找元素
给出此消息
我无法理解此JS页面请参见回答中的编辑3
元素\u单击。单击()
给出此错误-
元素不可交互异常:消息:元素无法滚动到视图中
很抱歉,长官,它仍然会出现同样的错误
元素无法滚动到视图中
长官,你知道我为什么不能点击按钮吗?
驱动程序。通过css\u选择器(“a.external”)查找元素
给出此消息
我无法理解此JS页面请参见回答中的编辑3单击会出现问题当您使用这些“单击”时会出现什么错误?此sir
元素无法滚动到视图中
您正在使用的浏览器和驱动程序版本?sir Firefox browser单击时出现问题当您使用这些“单击”时会出现什么错误?此sir
元素无法滚动到视图中
您正在使用的浏览器和驱动程序版本?sir Firefox浏览器