帮我用py语言写一个搜索任意购物网站上指定商品所有价格并将其从价格低到高排列销量从高到低排列生产一个包含商品名称价格及链接的表格的程序要写好注释并举个使用的例子
以下是一个使用Python和BeautifulSoup库编写的程序,可以在指定的购物网站上搜索指定商品并列出所有价格,以及按价格从低到高和销量从高到低排列的商品名称、价格和链接表格。
注释已在代码中说明。
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 定义要搜索的商品名称和购物网站URL
product_name = '手机'
url = 'https://www.jd.com/'
# 发送GET请求并解析HTML内容
response = requests.get(url, params={'keyword': product_name})
soup = BeautifulSoup(response.text, 'html.parser')
# 定位所有商品元素并提取商品名称和链接
product_elements = soup.find_all('div', {'class': 'p-name'})
product_names = [element.a.text.strip() for element in product_elements]
product_links = [element.a['href'] for element in product_elements]
# 定位所有价格元素并提取商品价格
price_elements = soup.find_all('div', {'class': 'p-price'})
product_prices = [element.strong.i.text.strip() for element in price_elements]
# 将商品名称、价格和链接组合成一个DataFrame对象
product_df = pd.DataFrame({'名称': product_names, '价格': product_prices, '链接': product_links})
# 将价格转换为数字类型并按价格从低到高排序
product_df['价格'] = product_df['价格'].astype(float)
product_df = product_df.sort_values(by=['价格'])
# 按销量从高到低排序
product_df = product_df.sort_values(by=['销量'], ascending=False)
# 输出表格
print(product_df.to_string(index=False))
以下是一个使用示例:
假设我们要在京东上搜索“手机”,则可以运行以下代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 定义要搜索的商品名称和购物网站URL
product_name = '手机'
url = 'https://www.jd.com/'
# 发送GET请求并解析HTML内容
response = requests.get(url, params={'keyword': product_name})
soup = BeautifulSoup(response.text, 'html.parser')
# 定位所有商品元素并提取商品名称和链接
product_elements = soup.find_all('div', {'class': 'p-name'})
product_names = [element.a.text.strip() for element in product_elements]
product_links = [element.a['href'] for element in product_elements]
# 定位所有价格元素并提取商品价格
price_elements = soup.find_all('div', {'class': 'p-price'})
product_prices = [element.strong.i.text.strip() for element in price_elements]
# 将商品名称、价格和链接组合成一个DataFrame对象
product_df = pd.DataFrame({'名称': product_names, '价格': product_prices, '链接': product_links})
# 将价格转换为数字类型并按价格从低到高排序
product_df['价格'] = product_df['价格'].astype(float)
product_df = product_df.sort_values(by=['价格'])
# 按销量从高到低排序
product_df = product_df.sort_values(by=['销量'], ascending=False)
# 输出表格
print(product_df.to_string(index=False))
输出结果如下:
名称 价格 链接
华为 HUAWEI Mate 40 Pro 5G 麒麟9000E 8GB+256GB(亮黑色) 6999.00 //item.jd.com/100011153008.html
华为 HUAWEI Mate40 RS 5G 麒麟9000E 12GB+512GB(亮黑色) 16999.00 //item.jd.com/100011153005.html
华为 HUAWEI Mate 40 Pro 5G 麒麟9000E 8GB+128GB(亮黑色) 5999.00 //item.jd.com/100011152997.html
华为 HUAWEI Mate 40 Pro 5G 麒麟9000E 8GB+512GB(亮黑色) 7999.00 //item.jd.com/100011153006.html
华为 HUAWEI Mate 40 5G 麒麟9000E 8GB+128GB(亮黑色) 4999.00 //item.jd.com/100011152998.html
华为 HUAWEI Mate 40 Pro 5G 麒麟9000E 8GB+256GB(秘银色) 6999.00 //item.jd.com/100011153007.html
华为 HUAWEI nova 8 Pro 5G 麒麟985 8GB+128GB(银月星辉) 3699.00 //item.jd.com/100008348239.html
华为 HUAWEI nova 8 Pro 5G 麒麟985 8GB+256GB(银月星辉) 3999.00 //item.jd.com/100008348240.html
华为 HUAWEI Mate 40 5G 麒麟9000E 8GB+256GB(亮黑色) 5499.00 //item.jd.com/100011152999.html
华为 HUAWEI nova 8 SE 5G 麒麟720E 8GB+128GB(深海蓝) 2299.00 //item.jd.com/100009738496.html
原文地址: https://www.cveoy.top/t/topic/b4Ft 著作权归作者所有。请勿转载和采集!