1、在京东页搜索某一类物品,得到结果页面,将前两页商品结果信息内容,名称及价格等信息存储到CSV中 2、找到最贵的商品信息以及价格输出 3、找出某一牌子的本类产品中前两页中价格最低的价格并输出 4、将前两页结果中同一品牌只保留最低价格那条,将结果存储到新的CSV中。
时间: 2024-04-02 15:34:24 浏览: 11
好的,我会尽力回答你的问题。根据你的问题,我猜测你需要一个京东爬虫程序来实现你的需求。以下是一个简单的Python程序,可以帮助你实现你的需求,但是请注意使用爬虫程序可能会违反京东的使用协议,所以请谨慎使用。
```python
import requests
from bs4 import BeautifulSoup
import csv
# 设置请求头
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'}
# 输入搜索关键词和页数
keyword = input('请输入要搜索的关键词:')
page_num = int(input('请输入要搜索的页数:'))
# 保存前两页的商品信息到CSV
with open('result.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(['商品名称', '价格'])
for page in range(1, page_num + 1):
url = f'https://search.jd.com/Search?keyword={keyword}&page={page}'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.select('#J_goodsList .gl-item')
for item in items:
name = item.select('.p-name em')[0].text.strip()
price = item.select('.p-price i')[0].text.strip()
writer.writerow([name, price])
# 找到最贵的商品信息以及价格输出
with open('result.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
max_price = 0
for row in reader:
if row[1].isdigit() and int(row[1]) > max_price:
max_price = int(row[1])
max_item = row[0]
print(f'最贵的商品是:{max_item},价格为:{max_price}')
# 找出某一牌子的本类产品中前两页中价格最低的价格并输出
brand = input('请输入要筛选的品牌:')
with open('result.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
min_price = float('inf')
for row in reader:
if brand in row[0] and row[1].isdigit() and int(row[1]) < min_price:
min_price = int(row[1])
min_item = row[0]
if min_price != float('inf'):
print(f'{brand}品牌本类产品中前两页中价格最低的是:{min_item},价格为:{min_price}')
else:
print(f'未找到{brand}品牌本类产品')
# 将前两页结果中同一品牌只保留最低价格那条,将结果存储到新的CSV中
brand_dict = {}
with open('result.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
if brand in row[0]:
if row[0] in brand_dict:
if int(row[1]) < brand_dict[row[0]]:
brand_dict[row[0]] = int(row[1])
else:
brand_dict[row[0]] = int(row[1])
with open(f'{brand}_result.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(['商品名称', '价格'])
for name, price in brand_dict.items():
writer.writerow([name, price])
print(f'已将同一品牌只保留最低价格的结果保存到{brand}_result.csv中')
```
使用方法:
1. 将以上代码保存为一个.py文件,比如jd_spider.py。
2. 在命令行中运行python jd_spider.py命令。
3. 按照提示依次输入搜索关键词、页数和品牌名称,程序会自动执行以上四个步骤,并输出结果。
希望这个程序可以帮助到你,如有疑问可以随时问我。