在这篇文章中,我们将通过Python爬虫技术从The Movie Database (TMDb)网站上抓取电影数据,并对这些数据进行分析。我们将使用到一些流行的Python库,比如requests
、lxml
、pandas
以及matplotlib
来帮助我们完成任务。
目标网站
1. 引言
在开始之前,请确保你已经安装了所有必需的Python库。你可以使用pip命令来安装它们:
pip install requests lxml pandas matplotlib DrissionPage DataRecorder fake_useragent
接下来,让我们一步步地构建我们的项目。
2. 导入所需库
首先,我们需要导入项目中需要用到的各种库。
import json
import os
import random
import re
from DrissionPage import ChromiumPage
from DataRecorder import Recorder
import time
import requests
from lxml import etree
from fake_useragent import UserAgent
import pandas as pd
import matplotlib.pyplot as plt
3. 创建数据记录器实例
为了保存抓取到的数据,我们创建一个DataRecorder
实例,并初始化CSV文件的列名。
recorder = Recorder(path=r"data.csv", cache_size=500)
recorder.add_data(['Title', 'Year', 'Director', 'Screenplay', 'Type', 'Description', 'User Score', 'Reviews', 'Revenue', 'Budget','Keywords'])
4. 加载网页并抓取电影链接
我们使用ChromiumPage
加载TMDb的电影列表页面,并循环抓取多页的电影详情页链接。
page = ChromiumPage()
page.get('https://www.themoviedb.org/movie')
page.wait.load_start()i = 0
set_links = set()while True:items = page.eles('.card style_1')for item in items:link = item.ele('x:./div[1]/div[1]/a').attr('href')set_links.add(link)print(len(set_links))if page.ele("x://p[@class='load_more']"):page.ele("x://p[@class:='load_more']").click()page.wait.load_start()i += 1print(