一、爬虫部分
在這個流程中,首先需要進行網頁爬取,獲取需要可視化的數據。
Python提供了多種爬蟲庫,其中最常用的是BeautifulSoup和requests庫。
具體步驟如下:
1. 確定需要爬取的網站和頁面
在進行爬蟲之前,需要確定需要爬取的網站和頁面。在這裡以豆瓣電影TOP250為例,網頁地址為:https://movie.douban.com/top250
2. 發送請求
import requests
url = 'https://movie.douban.com/top250'
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.36'}
response = requests.get(url, headers=headers)
html = response.text
這裡使用requests庫發送GET請求,獲取網頁的HTML代碼。
3. 解析HTML代碼
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
使用BeautifulSoup庫解析獲取到的HTML代碼,生成可供操作的文檔樹。
4. 獲取需要的數據
data = []
for item in soup.find_all('div', class_='item'):
title = item.find('span', class_='title').get_text(strip=True)
rating_num = item.find('span', class_='rating_num').get_text(strip=True)
data.append({'title': title, 'rating_num': rating_num})
在這個例子中,我們獲取了每個電影的標題和評分,並將其打包成字典放在列表中。
至此,爬虫部分結束。下面將進入數據可視化的部分。
二、數據可視化部分
數據可視化是將所獲取的數據以圖表的形式展示出來,讓用戶能夠直觀的了解其特徵和趨勢。在這個流程中,我們將使用matplotlib庫進行數據可視化。
具體步驟如下:
1. 導入matplotlib庫
import matplotlib.pyplot as plt
這裡使用plt作為matplotlib庫的別名。
2. 準備數據
在這個例子中,我們已經在爬虫部分獲取到了電影的標題和評分,下面將對評分進行可視化。
x = [i['title'] for i in data]
y = [float(i['rating_num']) for i in data]
將獲取到的結果分別存儲在x和y中作為橫坐標和縱坐標。
3. 繪製圖表
fig, ax = plt.subplots()
ax.bar(x, y)
plt.xticks(rotation=90)
plt.show()
這裡使用了ax.bar()方法繪製了一張柱狀圖,將x和y作為輸入數據。plt.xticks()方法用於設置x軸標籤旋轉角度,使得標籤不重疊。
至此,數據可視化部分結束。
三、完整代碼示例
import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
url = 'https://movie.douban.com/top250'
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.36'}
response = requests.get(url, headers=headers)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
data = []
for item in soup.find_all('div', class_='item'):
title = item.find('span', class_='title').get_text(strip=True)
rating_num = item.find('span', class_='rating_num').get_text(strip=True)
data.append({'title': title, 'rating_num': rating_num})
x = [i['title'] for i in data]
y = [float(i['rating_num']) for i in data]
fig, ax = plt.subplots()
ax.bar(x, y)
plt.xticks(rotation=90)
plt.show()
通過以上代碼,我們可以完整的實現網頁爬取並數據可視化的流程。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287122.html