我正在制作一个抓取刀,其工作原理如下 ->
访问网站 A --> 点击立即购买按钮 --> 登陆亚马逊 --> 抓取数据 --> 返回网站 A
问题是该网站是在 AnugularJS 上制作的。我无法使用 selenium.click() 单击按钮
我正在使用 selenium 和 scrapy 来抓取这个 javascript 页面。 该页面是无限加载页面,请建议适用于无限加载页面的解决方案。
这是 Div 元素 -
<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>
我尝试过的语法是,
sel.xpath('//*[@class="button"]').click()
哪个返回,
'SelectorList' object has no attribute 'click'
最佳答案
'SelectorList' object has no attribute 'click'
表示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()
或
element_to_click =
self.driver.find_element_by_xpath("//a[contains(@href,'http://www.amazon.com/dp/B01DBR53FU/?tag=097-20&ascsubtag=v7_3_3_3m7_2nhz_0_x01_-srt5-')]")
#assuming that the href doesn't change.
driver.execute_script("arguments[0].scrollIntoView(true);",element_to_click)
# scroll element into view
element_to_click.click()
或
您可以使用其他答案中提到的 linkText。
编辑 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)
所有提到的礼品文章都是由 repeater
生成的因为这是一个 Angular 网页。显示的所有礼物均位于 article
内。标签。
如果您想单击第二个或第三个或任何其他文章按钮,您只需更改 article:nth-child
获取相应的子项,此代码将起作用。
在开始自动化之前,请先简要阅读一下如何创建、使用定位器,然后再深入了解自动化。
关于javascript - 如何在从 Angular JavaScript 提供数据的页面上执行 Scrapy 和 Selenium?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667446/