发现每个产品 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
...
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
...