python - 无法在请求 Python 中捕获记录名称、价格和评级以及图像
问题描述
打印产品名称、产品尺寸价格和评级时出现异常,这是我要从中提取详细信息的链接。
import requests
import time
from requests.models import Response
params = ((
'url','/continental-80-shoes/G27707.html'),
('sitePath', 'us'),)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
response = requests.get('https://www.adidas.com/api/metadata/pdp',params=params,headers=headers)
for item in response.json()['metadata']:
itemRes = requests.get('https://www.adidas.com/api/search/product/'+item['productId'],headers=headers)
print(item['productId'],item['name'],item['price'],item['rating])
解决方案
您必须抓取阿迪达斯网站并使用正则表达式:
import requests
import re
endpoint = "https://www.adidas.com.au/continental-80-shoes/G27707.html"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
response = requests.get(endpoint, headers = headers)
data = response.text
pricereg = r"(?<=\"price\":)(.*)(?=,\")"
namereg = r"(?<=\"name\":)(.*)(?=,\"co)"
ratingreg= r"(?<=\"ratingValue\":)(.*)(?=,\"reviewCou)"
price = re.search(pricereg, data, re.MULTILINE).group()
name = re.search(namereg, data, re.MULTILINE).group()
rating = re.search(ratingreg, data, re.MULTILINE).group()
print(f"name {name}, rating {rating}, price {price}")
推荐阅读
- xamarin.forms - Xamarin Forms iOS Build Release 构建缺少 AppIcons
- python - 如何为共享评论元素的子列表的每个元素赋予相关子列表的唯一 ID?
- javascript - 如何从另一个 html 文件中预填充文本框的值?
- lua - wireshark 启发式解析器解码作为数据包的一部分
- spring-boot - 无法使用云 kafka 流将 autoCommitOffset 设置为 true
- github - 带有多个链接的 Github 降价图像
- html - 如何使元素居中
- user-interface - 如何旋转 wxButton 标签?
- wix - 使用 WiX 创建的 MSI 存在管理员权限问题
- python - 带有字符串解析的递归数学运算