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"))
但是,我似乎无法检索任何 href
、onclick
属性,我想知道这是否可能。我注意到我无法右键单击,也无法在新选项卡中打开 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
抓取 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"))
但是,我似乎无法检索任何 href
、onclick
属性,我想知道这是否可能。我注意到我无法右键单击,也无法在新选项卡中打开 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