python 爬取京东数据 并可视化
时间: 2023-10-10 10:09:27 浏览: 102
Python可以通过使用openpyxl库来读取和写入Excel文件,然后使用matplotlib和pyecharts等第三方库来进行数据可视化。
首先,你需要使用openpyxl库来读取京东数据。你可以使用openpyxl.load_workbook()函数来打开一个Excel文件,并使用.active属性来选择活动的工作表。然后,你可以使用工作表的.cell()方法来访问单元格的数据。
接下来,你可以使用matplotlib和pyecharts来可视化数据。matplotlib可以创建各种图表,例如折线图、柱状图和散点图。你可以使用plt.plot()函数来创建折线图,plt.bar()函数来创建柱状图,plt.scatter()函数来创建散点图等。
而pyecharts是一个基于Echarts的Python可视化库,它提供了丰富的图表类型和交互功能。你可以使用Bar()、Line()、Scatter()等函数来创建不同类型的图表,然后使用render()函数来显示和保存图表。
相关问题
python爬取京东商品信息,并作可视化分析
Python爬取京东商品信息并进行可视化分析通常涉及以下几个步骤:
1. **安装所需库**:
- `requests`:用于发送HTTP请求获取网页内容
- `BeautifulSoup` 或 `lxml`:解析HTML文档
- `pandas`:数据处理库,用于存储和分析数据
- `matplotlib` 或 `seaborn`:用于数据可视化
2. **获取网页源码**:
使用`requests.get()`函数获取商品详情页的HTML源码,例如:
```python
url = "https://item.jd.com/商品ID.html"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
```
3. **提取数据**:
利用BeautifulSoup定位商品信息元素,比如标题、价格、评价等,将其转化为结构化的数据。
4. **数据清洗和整理**:
清除无用的HTML标签,填充缺失值,统一数据格式,存储到`pandas` DataFrame中。
5. **数据分析**:
使用`pandas`对数据进行统计分析,如计算平均价格、评价分布等。
6. **数据可视化**:
- 可以用`matplotlib`创建简单的柱状图、折线图展示价格分布、评分趋势等;
- 或者使用`seaborn`绘制更复杂的数据分布图,如热力图或箱线图。
```python
import matplotlib.pyplot as plt
import seaborn as sns
# 分析价格分布
price_distribution = df['价格'].value_counts().sort_index()
plt.figure(figsize=(10, 6))
sns.histplot(price_distribution, bins=range(0, 10000, 100), kde=True)
plt.xlabel('价格')
plt.ylabel('频数')
plt.title('京东商品价格分布')
# 分析用户评分
sns.boxplot(x='评分', data=df)
plt.title('用户评分分布')
```
python爬取京东网页并将数据传入数据库,用pyecharts展示数据
好的,以下是我提供的一些爬取京东网页并将数据传入数据库,用pyecharts展示数据的步骤:
1. 导入所需的库
```python
import requests
from pyquery import PyQuery as pq
import pymysql
from pyecharts import options as opts
from pyecharts.charts import Bar
```
2. 连接数据库并创建表格
```python
# 连接数据库
db = pymysql.connect(host='localhost', user='root', password='password', database='test', port=3306)
cursor = db.cursor()
# 创建表格
sql = """
CREATE TABLE IF NOT EXISTS `jd_goods` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`price` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
"""
cursor.execute(sql)
db.commit()
```
3. 定义爬取函数并解析数据
```python
def get_jd_info(keyword):
url = 'https://search.jd.com/Search?keyword={}&enc=utf-8'.format(keyword)
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'}
r = requests.get(url, headers=headers)
html = r.text
doc = pq(html)
items = doc('.gl-item').items()
data = []
for item in items:
title = item.find('.p-name em').text().replace('\n','')
price = item.find('.p-price i').text()
data.append({'title':title, 'price':price})
return data
```
4. 将数据存入数据库
```python
keyword = '手机'
data = get_jd_info(keyword)
sql = "INSERT INTO jd_goods(title, price) VALUES(%s, %s)"
for item in data:
try:
cursor.execute(sql, (item['title'], float(item['price'])))
db.commit()
except:
db.rollback()
```
5. 从数据库中获取数据并用pyecharts可视化
```python
# 从数据库中获取数据
sql = "SELECT * FROM jd_goods"
cursor.execute(sql)
results = cursor.fetchall()
prices = [item[2] for item in results]
titles = [item[1] for item in results]
# 使用pyecharts绘制柱状图
bar = (
Bar()
.add_xaxis(titles)
.add_yaxis("价格", prices)
.set_global_opts(title_opts=opts.TitleOpts(title="{}价格分布".format(keyword)))
)
bar.render("{}.html".format(keyword))
```
以上是一个简单的例子,你可以根据自己的需求对代码进行修改和优化。
阅读全文