gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:00:05 25 4
gpt4 key购买 nike

我正在制作一个抓取刀,其工作原理如下 ->

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

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

我正在使用 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>

我尝试过的语法是,

 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&amp;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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com