写python代码,数据采集做一个,苏宁易购,京东,唯品会,的手机比价系统
时间: 2024-04-26 21:24:50 浏览: 12
好的,以下是一个简单的 Python 程序,可以实现苏宁易购、京东和唯品会的手机比价功能:
```python
import requests
from bs4 import BeautifulSoup
# 定义需要获取的商品关键字和页面数量
keyword = '手机'
page_count = 2
# 定义苏宁易购的请求头和请求参数
suning_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
suning_params = {
'keyword': keyword,
'pageNo': 1,
'sort': 'popularity',
'originalSearchInput': '',
'minPrice': '',
'maxPrice': '',
'venderId': '',
'shopId': '',
'promotionTags': '',
'coupon': '',
'freeShip': '',
'areaId': '',
'facet': '',
'categoryId': '',
'brandId': '',
'commType': '',
'channel': '',
'activityId': '',
'from': '',
'sn': '',
'scrolling': 'y',
'pageSize': '60'
}
# 定义京东的请求头和请求参数
jd_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
jd_params = {
'keyword': keyword,
'page': 1,
'sort': 'popularityasc',
'enc': 'utf-8',
'qrst': '1',
'rt': '1',
'stop': '1',
'vt': '2',
'stock': '1',
'page_size': '60',
'click': '0'
}
# 定义唯品会的请求头和请求参数
vip_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
vip_params = {
'wq': keyword,
'page': 1,
'sort': 'default',
'source': 'pinzhuan',
'ad': 0,
'cp': 0,
'ppath': '',
'page_size': '60',
'is_discount': '',
'is_sale': '',
'goods_filter': '',
'jth': '',
's5': '',
's6': '',
's7': '',
's8': '',
's9': '',
's10': ''
}
# 定义函数获取苏宁易购的商品列表
def get_suning_goods(keyword, page_no):
suning_params['keyword'] = keyword
suning_params['pageNo'] = page_no
url = 'https://search.suning.com/emall/searchProductList.do'
res = requests.get(url, headers=suning_headers, params=suning_params)
soup = BeautifulSoup(res.text, 'html.parser')
goods_list = soup.select('.main-wrap .product-wrap .item-wrap')
result = []
for goods in goods_list:
name = goods.select('.title-selling-point')[0].text.strip()
price = goods.select('.price-box .def-price .mainprice')[0].text.strip()
brand = goods.select('.sell-point')[0].text.strip()
model = goods.select('.title-selling-point')[0].text.strip()
result.append([name, price, brand, model])
return result
# 定义函数获取京东的商品列表
def get_jd_goods(keyword, page_no):
jd_params['keyword'] = keyword
jd_params['page'] = page_no
url = 'https://search.jd.com/Search'
res = requests.get(url, headers=jd_headers, params=jd_params)
soup = BeautifulSoup(res.text, 'html.parser')
goods_list = soup.select('.gl-item')
result = []
for goods in goods_list:
name = goods.select('.p-name em')[0].text.strip()
price = goods.select('.p-price strong i')[0].text.strip()
brand = goods.select('.p-name a')[0].text.strip()
model = goods.select('.p-name a')[0].text.strip()
result.append([name, price, brand, model])
return result
# 定义函数获取唯品会的商品列表
def get_vip_goods(keyword, page_no):
vip_params['wq'] = keyword
vip_params['page'] = page_no
url = 'https://category.vip.com/search-1-0-1.html'
res = requests.get(url, headers=vip_headers, params=vip_params)
soup = BeautifulSoup(res.text, 'html.parser')
goods_list = soup.select('.goods-list .goods-item')
result = []
for goods in goods_list:
name = goods.select('.goods-title')[0].text.strip()
price = goods.select('.price-current')[0].text.strip()
brand = goods.select('.goods-title')[0].text.strip()
model = goods.select('.goods-title')[0].text.strip()
result.append([name, price, brand, model])
return result
# 获取所有商品列表
all_goods = []
for i in range(1, page_count+1):
all_goods += get_suning_goods(keyword, i)
all_goods += get_jd_goods(keyword, i)
all_goods += get_vip_goods(keyword, i)
# 输出所有商品列表
for goods in all_goods:
print(goods)
```
这个程序可以根据关键字和页面数量获取苏宁易购、京东和唯品会的商品列表,并输出所有商品的名称、价格、品牌和型号信息。您可以根据需要对程序进行修改和扩展,加入比价和数据可视化等功能。