1 回答

TA貢獻1824條經驗 獲得超6個贊
使用 python 嘗試以下方法 -請求簡單、直接、可靠、快速,并且在請求時需要更少的代碼。在檢查了 google chrome 瀏覽器的網絡部分后,我從網站本身獲取了 API URL。
下面的腳本到底在做什么:
首先,它將獲取 API URL,根據 2 個動態參數(產品和類別)創建 URL,然后執行 GET 請求來獲取數據。
獲取數據后腳本將使用 json.loads 庫解析 JSON 數據。最后,它將一一迭代所有產品列表,并打印分為 2 個類別“?box1_ProductToProduct?”和“?box2_KategorieTopseller?”的詳細信息,如品牌、名稱、產品編號和單價。同樣,您可以通過查看 API 調用來添加更多詳細信息。
import json
import requests
from urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
def scrap_product_details():
PRODUCT = 'MMCH1991479' #Product number
CATEGORY = '680942' #Category number
URL = 'https://www.mediamarkt.ch/rde_server/res/MMCH/recomm/product_detail/sid/WACXyEbIf3khlu6FcHlh1B1?product=' + PRODUCT + '&category=' + CATEGORY? # dynamic URL
response = requests.get(URL,verify = False) #GET request to fetch the data
result = json.loads(response.text) # Parse JSON data using json.loads
box1_ProductToProduct = result[0]['box1_ProductToProduct'] # Extracted data from API
box2_KategorieTopseller = result[1]['box2_KategorieTopseller']
for item in box1_ProductToProduct: # loop over extracted data
? ? print('-' * 100)
? ? print('Brand : ',item['brand'])
? ? print('Name : ',item['name'])
? ? print('Net Unit Price : ',item['netUnitPrice'])
? ? print('Product Number : ',item['product_nr'])
? ? print('-' * 100)
for item in box2_KategorieTopseller:? # loop over extracted data
? ? print('-' * 100)
? ? print('Brand : ',item['brand'])
? ? print('Name : ',item['name'])
? ? print('Net Unit Price : ',item['netUnitPrice'])
? ? print('Product Number : ',item['product_nr'])
? ? print('-' * 100)
scrap_product_details()
添加回答
舉報