爬取当当网数据可视化代码
时间: 2023-09-14 08:03:56 浏览: 101
好的,以下是一个简单的爬取当当网图书信息并进行可视化的 Python 代码示例:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 爬取当当网图书信息
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()
```
这段代码首先使用 requests 库和 BeautifulSoup 库爬取当当网图书信息,然后将爬取到的数据存储到 Pandas 的 DataFrame 中。接着使用 Matplotlib 库绘制了价格分布直方图和按出版社分组的平均价格条形图。这只是一个简单的示例,您可以根据自己的需求进行修改和扩展。
阅读全文