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()
添加回答
举报