发现每个产品 url

Discover each product url

https://i.stack.imgur.com/zFqm1.png

需要提取所有产品 urls,试过了。无法获取其中的大部分内容

url = "https://alcohaul.sg/"

var x = document.querySelectorAll("a");
var myarray = []
for (var i=0; i<x.length; i++){
var nametext = x[i].textContent;
var cleantext = nametext.replace(/\s+/g, ' ').trim();
var cleanlink = x[i].href;
myarray.push([cleantext,cleanlink]);
};
function make_table() {
    var table = '<table><thead><th>Name</th><th>Links</th></thead><tbody>';
   for (var i=0; i<myarray.length; i++) {
            table += '<tr><td>'+ myarray[i][0] + '</td><td>'+myarray[i][1]+'</td></tr>';
    };
 
    var w = window.open("");
w.document.write(table); 
}
make_table()

当您说“所有产品 URL”时,您指的是主页上可见的产品,是吗?

我在浏览器中访问了该页面并记录了我的网络流量。浏览器向某些 REST API 发出各种 HTTP GET 请求。其中之一具有端点 api/newarrival,其响应包含主页上产品的所有产品信息 - 在 JSON 中。您所要做的就是模仿 HTTP GET 请求。这个 API 看起来相当宽松 - 不需要请求 headers,甚至不需要任何 query-string 参数。然而,这也意味着您可以预期此 API 的响应会随着时间的推移而变化,因为更新的“新来者”...到达。

def main():

    import requests

    url = "https://alcohaul.sg/api/newarrival"

    response = requests.get(url)
    response.raise_for_status()

    base_url = "https://alcohaul.sg/products/{}"

    for product in response.json():
        print(base_url.format(product["slug"]))

    return 0


if __name__ == "__main__":
    import sys
    sys.exit(main())

输出:

https://alcohaul.sg/products/absolut-vodka-blue-70cl
https://alcohaul.sg/products/campari-70cl
https://alcohaul.sg/products/botanist-gin-70cl
https://alcohaul.sg/products/strangelove-premium-light-tonic-pack-4-x-180ml
https://alcohaul.sg/products/strangelove-premium-indian-tonic-no-8-pack-4-x-180ml
https://alcohaul.sg/products/strangelove-premium-coastal-tonic-pack-4-x-180ml
https://alcohaul.sg/products/strangelove-premium-lo-cal-double-ginger-beer-pack-4-x-300ml
...