Python/Selenium web scrap 如何从链接中找到隐藏的 src 值?

Python/Selenium web scrap how to find hidden src value from a links?

抓取 links 应该是一个简单的壮举,通常只是抓取 a 标签的 src 值。

我最近发现这个网站(https://sunteccity.com.sg/promotions),其中找不到每个项目的标签的 href 值,但重定向仍然有效。我试图找出一种方法来获取项目及其相应的 links。我典型的 python selenium 代码看起来是这样的

all_items = bot.find_elements_by_class_name('thumb-img')
for promo in all_items:
    a = promo.find_elements_by_tag_name("a")
    print("a[0]: ", a[0].get_attribute("href"))

但是,我似乎无法检索任何 hrefonclick 属性,我想知道这是否可能。我注意到我无法右键单击,也无法在新选项卡中打开 link。

是否有任何方法可以获取所有这些项目的 link?

编辑:是否有任何方法可以检索页面上项目的所有 link?

https://sunteccity.com.sg/promotions/724
https://sunteccity.com.sg/promotions/731
https://sunteccity.com.sg/promotions/751
https://sunteccity.com.sg/promotions/752
https://sunteccity.com.sg/promotions/754
https://sunteccity.com.sg/promotions/280
...

编辑: 添加一个这样的锚标记的图像以获得更好的清晰度:

您使用了错误的定位器。它给你带来了很多无关紧要的元素。
请尝试 find_elements_by_css_selector('.collections-page .thumb-img') 而不是 find_elements_by_class_name('thumb-img'),这样您的代码将是

all_items = bot.find_elements_by_css_selector('.collections-page .thumb-img')
for promo in all_items:
    a = promo.find_elements_by_tag_name("a")
    print("a[0]: ", a[0].get_attribute("href"))

您也可以通过 .collections-page .thumb-img a 定位器直接获取所需的链接,这样您的代码可以是:

links = bot.find_elements_by_css_selector('.collections-page .thumb-img a')
for link in links:
    print(link.get_attribute("href"))

通过对 Javascript 进行逆向工程,将您带到促销页面(见 https://sunteccity.com.sg/_nuxt/d4b648f.js),让您获得所有链接,这些链接基于 HappeningID.你可以在JS控制台通过运行验证,这给你第一个提升:

window.__NUXT__.state.Promotion.promotions[0].HappeningID

在此基础上,您可以创建一个 Python 循环来获取所有促销:

items = driver.execute_script("return window.__NUXT__.state.Promotion;")
for item in items["promotions"]:
    base = "https://sunteccity.com.sg/promotions/"
    happening_id = str(item["HappeningID"])
    print(base + happening_id)

生成了以下输出:

https://sunteccity.com.sg/promotions/724
https://sunteccity.com.sg/promotions/731
https://sunteccity.com.sg/promotions/751
https://sunteccity.com.sg/promotions/752
https://sunteccity.com.sg/promotions/754
https://sunteccity.com.sg/promotions/280
https://sunteccity.com.sg/promotions/764
https://sunteccity.com.sg/promotions/766
https://sunteccity.com.sg/promotions/762
https://sunteccity.com.sg/promotions/767
https://sunteccity.com.sg/promotions/732
https://sunteccity.com.sg/promotions/733
https://sunteccity.com.sg/promotions/735
https://sunteccity.com.sg/promotions/736
https://sunteccity.com.sg/promotions/737
https://sunteccity.com.sg/promotions/738
https://sunteccity.com.sg/promotions/739
https://sunteccity.com.sg/promotions/740
https://sunteccity.com.sg/promotions/741
https://sunteccity.com.sg/promotions/742
https://sunteccity.com.sg/promotions/743
https://sunteccity.com.sg/promotions/744
https://sunteccity.com.sg/promotions/745
https://sunteccity.com.sg/promotions/746
https://sunteccity.com.sg/promotions/747
https://sunteccity.com.sg/promotions/748
https://sunteccity.com.sg/promotions/749
https://sunteccity.com.sg/promotions/750
https://sunteccity.com.sg/promotions/753
https://sunteccity.com.sg/promotions/755
https://sunteccity.com.sg/promotions/756
https://sunteccity.com.sg/promotions/757
https://sunteccity.com.sg/promotions/758
https://sunteccity.com.sg/promotions/759
https://sunteccity.com.sg/promotions/760
https://sunteccity.com.sg/promotions/761
https://sunteccity.com.sg/promotions/763
https://sunteccity.com.sg/promotions/765
https://sunteccity.com.sg/promotions/730
https://sunteccity.com.sg/promotions/734
https://sunteccity.com.sg/promotions/623