Python制作查询商品历史价格的小工具
在本教程中,我们将介绍如何使用Python制作一个查询商品历史价格的小工具。我们将使用Python的requests库和BeautifulSoup库来实现这个功能。以下是一个完整攻略,含两个示例。
步骤1:获取商品历史价格数据
首先,我们需要获取商品历史价格数据。我们可以使用requests库发送HTTP请求,并使用BeautifulSoup库解析HTML页面。以下是一个示例代码,演示如何获取商品历史价格数据:
import requests
from bs4 import BeautifulSoup
# 获取商品历史价格数据
def get_price_history_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
price_history = []
for item in soup.select('.price-history-item'):
date = item.select_one('.date').text.strip()
price = item.select_one('.price').text.strip()
price_history.append((date, price))
return price_history
在上面的代码中,我们首先定义了一个名为get_price_history_data的函数,它接受一个商品URL作为参数,并返回一个包含商品历史价格数据的列表。在函数内部,我们使用requests库发送HTTP请求,并使用BeautifulSoup库解析HTML页面。然后,我们遍历页面中的.price-history-item元素,并从中提取日期和价格信息。最后,我们将日期和价格信息添加到一个列表中,并返回这个列表。
步骤2:将商品历史价格数据写入CSV文件
接下来,我们需要将商品历史价格数据写入CSV文件。我们可以使用Python的csv库实现这个功能。以下是一个示例代码,演示如何将商品历史价格数据写入CSV文件:
import csv
# 将商品历史价格数据写入CSV文件
def write_price_history_to_csv(price_history, filename):
with open(filename, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Date', 'Price'])
for date, price in price_history:
writer.writerow([date, price])
在上面的代码中,我们首先定义了一个名为write_price_history_to_csv的函数,它接受一个包含商品历史价格数据的列表和一个文件名作为参数,并将数据写入CSV文件中。在函数内部,我们使用csv库创建一个CSV文件,并使用writerow方法将表头写入文件中。然后,我们遍历商品历史价格数据列表,并使用writerow方法将每一行数据写入文件中。
示例1:查询单个商品历史价格并写入CSV文件
以下是一个示例代码,演示如何查询单个商品历史价格并将数据写入CSV文件:
import requests
from bs4 import BeautifulSoup
import csv
# 获取商品历史价格数据
def get_price_history_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
price_history = []
for item in soup.select('.price-history-item'):
date = item.select_one('.date').text.strip()
price = item.select_one('.price').text.strip()
price_history.append((date, price))
return price_history
# 将商品历史价格数据写入CSV文件
def write_price_history_to_csv(price_history, filename):
with open(filename, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Date', 'Price'])
for date, price in price_history:
writer.writerow([date, price])
# 示例:查询单个商品历史价格并写入CSV文件
url = 'https://example.com/product/123'
price_history = get_price_history_data(url)
write_price_history_to_csv(price_history, 'product_123_price_history.csv')
在上面的代码中,我们首先定义了一个名为get_price_history_data的函数,它接受一个商品URL作为参数,并返回一个包含商品历史价格数据的列表。然后,我们定义了一个名为write_price_history_to_csv的函数,它接受一个包含商品历史价格数据的列表和一个文件名作为参数,并将数据写入CSV文件中。最后,我们使用这两个函数查询单个商品的历史价格,并将数据写入CSV文件中。
示例2:查询多个商品历史价格并写入CSV文件
以下是一个示例代码,演示如何查询多个商品历史价格并将数据写入CSV文件:
import requests
from bs4 import BeautifulSoup
import csv
# 获取商品历史价格数据
def get_price_history_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
price_history = []
for item in soup.select('.price-history-item'):
date = item.select_one('.date').text.strip()
price = item.select_one('.price').text.strip()
price_history.append((date, price))
return price_history
# 将商品历史价格数据写入CSV文件
def write_price_history_to_csv(price_history, filename):
with open(filename, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Date', 'Price'])
for date, price in price_history:
writer.writerow([date, price])
# 示例:查询多个商品历史价格并写入CSV文件
urls = ['https://example.com/product/123', 'https://example.com/product/456', 'https://example.com/product/789']
for url in urls:
price_history = get_price_history_data(url)
filename = f'{url.split("/")[-1]}_price_history.csv'
write_price_history_to_csv(price_history, filename)
在上面的代码中,我们首先定义了一个名为get_price_history_data的函数,它接受一个商品URL作为参数,并返回一个包含商品历史价格数据的列表。然后,我们定义了一个名为write_price_history_to_csv的函数,它接受一个包含商品历史价格数据的列表和一个文件名作为参数,并将数据写入CSV文件中。最后,我们使用一个循环来遍历多个商品的URL,并使用get_price_history_data函数查询每个商品的历史价格。然后,我们使用文件名将数据写入CSV文件中。
总结
本教程介绍了如何使用Python制作一个查询商品历史价格的小工具。我们使用的Python的requests库和BeautifulSoup库来获取商品历史价格数据,并使用Python的csv库将数据写入CSV文件中。提供了两个示例代码,演示如何查询单个商品的历史价格和多个商品的历史价格,并将数据写入CSV文件中。这些示例代码可以助我们更好地理解如何使用Python制作一个查询商品历史价格的小工具。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 制作查询商品历史价格的小工具 - Python技术站