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