Python はどのようにして最初にクローラをデータベースに保存し、その後視覚化を実現しますか?

Python は、特に Web スクレイピングやデータ視覚化に関して非常に人気のあるプログラミング言語です。この記事では、Python を使用して Web クローラーを作成し、クロールされたデータをデータベースに保存し、データ視覚化ツールを使用してデータを表示する方法を紹介します。

1. クロールデータ

まず、データをクロールするための Python クローラー プログラムを作成する必要があります。以下は、Douban Movie Top250 をクロールする例です。

Requests ライブラリを使用して HTTP リクエストを送信し、BeautifulSoup ライブラリを使用して HTML ページを解析し、正規表現を使用して必要なデータを抽出します。

import requests
from bs4 import BeautifulSoup
import re

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.3'}
response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.find_all('div', class_='info')

data = []
for movie in movies:
    name = movie.find('span', class_='title').get_text()
    score = re.findall('(\d\.\d)', str(movie.find('span', class_='rating_num')))
    if score:
        score = float(score[0])
    else:
        score = None
    director = re.findall('导演: (.*?) ', movie.find('p', class_='').get_text().strip())[0]
    data.append({'name': name, 'score': score, 'director': director})

2、データベースに保存される

クロールされたデータをデータベースに保存します。ここでは MongoDB を例にします。

PyMongo ライブラリを使用して MongoDB データベースに接続し、指定されたコレクションにデータを挿入します。

from pymongo import MongoClient

client = MongoClient('localhost', 27017)
db = client['douban']
collection = db['movies']

for d in data:
    collection.insert_one(d)

3. データの視覚化

Matplotlib ライブラリを使用してヒストグラムを描画し、映画の評価の分布を表示します。

PyMongo ライブラリを使用して MongoDB データベースからデータを読み取り、Matplotlib ライブラリを使用してヒストグラムを描画します。

import matplotlib.pyplot as plt

scores = []
for d in collection.find():
    scores.append(d['score'])

bins = [i/10 for i in range(0, 11)]
plt.hist(scores, bins=bins, edgecolor='black')
plt.xlabel('score')
plt.ylabel('count')
plt.title('Movie score distribution')
plt.show()

完全なコードは次のとおりです。

import requests
from bs4 import BeautifulSoup
import re
from pymongo import MongoClient
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.3'}
response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.find_all('div', class_='info')

data = []
for movie in movies:
    name = movie.find('span', class_='title').get_text()
    score = re.findall('(\d

おすすめ

転載: blog.csdn.net/m0_72605743/article/details/129863146