爬取京东手机商品的品牌名、店铺名、好评率、价格的python代码
时间: 2025-03-23 14:15:22 浏览: 47
### 如何使用Python编写爬虫程序抓取京东手机商品的数据
为了实现从京东平台上获取手机商品的品牌名、店铺名、好评率和价格数据,可以借助 `Selenium` 和 `BeautifulSoup` 等工具完成网页解析与数据提取的任务。以下是具体方法:
#### 使用 Selenium 进行动态页面加载
由于京东的商品详情页通常由 JavaScript 动态渲染生成,传统的静态 HTML 解析可能无法满足需求。因此,可以选择 `Selenium` 来模拟浏览器行为并加载完整的动态页面内容[^4]。
```python
from selenium import webdriver
import time
# 初始化 WebDriver(需提前下载对应版本的 ChromeDriver)
driver = webdriver.Chrome()
# 访问目标 URL
url = "https://www.jd.com"
driver.get(url)
# 模拟滚动到底部以加载更多商品信息
for _ in range(5): # 假设需要滚动多次来加载足够的商品
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2) # 等待页面加载完毕
html_content = driver.page_source
driver.quit()
```
#### 数据解析与提取
利用 `BeautifulSoup` 对已加载的 HTML 页面进行结构化处理,并从中抽取所需字段(品牌名、店铺名、好评率、价格)。需要注意的是,具体的标签名称和类名可能会因网站更新而改变,建议通过开发者工具查看最新的 DOM 结构[^1]。
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, 'html.parser')
items = soup.find_all('div', class_='gl-i-wrap') # 商品列表项容器的选择器
data_list = []
for item in items:
try:
brand_name = item.select_one('.p-shop').text.strip() if item.select_one('.p-shop') else "未知品牌" # 店铺/品牌名
shop_name = item.select_one('.J_im_icon')['title'] if item.select_one('.J_im_icon') else "无店铺信息" # 商家名称
good_rate = item.select_one('.comment-con .u-star-num').text.strip() if item.select_one('.comment-con .u-star-num') else "暂无评价" # 好评率
price = item.select_one('i.price').text.strip() if item.select_one('i.price') else "未标明价格" # 单价
data_list.append({
'brand': brand_name,
'shop': shop_name,
'good_rate': good_rate,
'price': price
})
except Exception as e:
print(f"Error occurred while parsing an item: {e}")
print(data_list[:5]) # 输出前五个样本验证结果
```
#### 存储到文件或数据库
将收集到的信息保存至本地 CSV 文件或者导入关系型数据库以便后续分析操作[^2]。
```python
import pandas as pd
df = pd.DataFrame(data_list)
df.to_csv('./jd_mobile_products.csv', index=False, encoding='utf_8_sig')
```
以上即为整个流程概述及其对应的代码片段展示。值得注意的是,在实际开发过程中还需考虑异常情况下的错误捕获机制以及遵守目标站点的服务条款规定等内容[^3]。
---
阅读全文
相关推荐












