当当网图书数据可视化爬取毕业设计代码
时间: 2023-09-15 08:17:35 浏览: 115
好的,以下是一个使用 Python 爬取当当网图书信息并进行数据可视化的毕业设计代码,供您参考:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 爬取当当网图书信息
url = "http://search.dangdang.com/?key=%BB%FA%D0%B5&act=input"
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"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
book_list = soup.select(".bigimg li")
data = []
for book in book_list:
name = book.select(".name")[0].text.strip()
author = book.select(".search_book_author")[0].text.strip()
price = book.select(".search_now_price")[0].text.strip()
publisher = book.select(".search_book_author")[1].text.strip()
data.append([name, author, price, publisher])
# 将爬取到的数据存储到 DataFrame 中
df = pd.DataFrame(data, columns=["书名", "作者", "价格", "出版社"])
# 绘制价格分布直方图
plt.hist(df["价格"].astype(float), bins=20, edgecolor="black")
plt.xlabel("价格")
plt.ylabel("频数")
plt.title("当当网图书价格分布直方图")
plt.show()
# 绘制按出版社分组的平均价格条形图
grouped = df[["价格", "出版社"]].groupby("出版社").mean()
grouped.plot(kind="bar", legend=False)
plt.ylabel("平均价格")
plt.title("当当网图书按出版社分组的平均价格")
plt.show()
# 绘制图书名称词云图
name_str = " ".join(df["书名"])
wordcloud = WordCloud(width=800, height=400, background_color="white").generate(name_str)
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.title("当当网图书名称词云图")
plt.show()
```
这段代码与之前给出的示例代码类似,不过增加了一个使用 wordcloud 库绘制图书名称词云图的操作。首先使用 Pandas 将爬取到的数据存储到 DataFrame 中,然后使用 Matplotlib 绘制价格分布直方图和按出版社分组的平均价格条形图。最后使用 wordcloud 库绘制图书名称词云图,将所有图书名称拼接成一个字符串,然后使用 WordCloud() 函数生成词云图像,imshow() 函数用于显示图像,axis() 函数用于隐藏坐标轴。
阅读全文