如何使用Python爬取亚马逊商品信息并处理书名、价格格式?
亚马逊商品爬取实现方案
需求对应处理逻辑
- 书名去括号后缀:使用正则匹配末尾的括号及内部内容,直接替换为空即可
- 作者提取:亚马逊畅销榜商品的作者信息对应选择器为
span.a-size-base.a-color-secondary,按需加异常捕获避免空值报错 - 价格提取后去美元符号:拿到价格文本后直接替换
$符号即可,如需数值格式可额外转float类型
修改后完整代码
from bs4 import BeautifulSoup import pandas as pd import requests import re # 导入正则模块处理书名 # 加请求头避免亚马逊拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } url = '你的亚马逊页面链接' html_content = requests.get(url, headers=headers).text soup = BeautifulSoup(html_content, "html.parser") # 指定解析器避免运行警告 rate = [] for x in soup.select("li.zg-item-immersion"): item = {} # 处理书名:去除末尾括号及内部内容 raw_name = x.select_one('a').get_text(strip=True) item['name'] = re.sub(r'\s*\(.*\)$', '', raw_name).strip() item['rank'] = x.select_one('span span').get_text(strip=True) # 提取作者 try: item['author'] = x.select_one('span.a-size-base.a-color-secondary').get_text(strip=True) except: item['author'] = '' # 无作者信息时留空 # 提取价格并去除美元符号 try: raw_price = x.select_one('span.p13n-sc-price').get_text(strip=True) item['price'] = raw_price.replace('$', '').strip() # 如需数值类型可打开下一行注释 # item['price'] = float(item['price']) except: item['price'] = '' # 无价格信息时留空 rate.append(item) print(rate)
注意事项
- 如果页面结构有变动,可自行右键目标元素选择「检查」,复制对应元素的CSS选择器替换代码中对应的选择器即可
- 频繁请求亚马逊容易触发反爬,可适当添加时间间隔控制请求频率
内容的提问来源于stack exchange,提问作者user16834795
相关产品推荐
相关产品推荐

