随着网络数据的日益丰富,如何从海量的信息中快速、准确地提取出有价值的数据,成为了许多开发者和技术爱好者关注的焦点。在这个过程中,网络爬虫技术凭借其强大的数据获取能力,成为了数据分析和挖掘的重要工具。本文将通过一个经典案例——使用Python爬取豆瓣Top250电影数据,来介绍网络爬虫的基本原理和实际操作方法。豆瓣电影作为国内知名的电影评分和评论平台,其Top250榜单汇聚了众多经典影片。通过爬取这些数据,我们可以对电影市场进行更深入的分析。本文将实现豆瓣Top250电影数据的简单爬取。
import random
import time
import requests
from lxml import etree
import pandas as pd
from fake_useragent import UserAgent# 生成随机的 User-Agent
ua = UserAgent()# 存储所有电影信息的列表
all_movies = []# 循环爬取多页数据
for i in range(0, 250, 25): # 每页有25部电影,共250部电影url = f"https://movie.douban.com/top250?start={i}&filter="headers = {"User-Agent": ua.random} # 随机选择一个 User-Agentresponse = requests.get(url=url, headers=headers)html = etree.HTML(response.text)rank = html.xpath('//div[@class="pic"]/em/text()') # 排名name = html.xpath('//div[@class="hd"]/a/span[1]/text()') # 电影名score = html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()') # 评分people = html.xpath('//div[@class="star"]/span[4]/text()') # 评分人数tu = list(zip(rank, name, score, people))all_movies.extend(tu)time.sleep(random.uniform(1, 2)) # 1-2秒再进行一次循环df = pd.DataFrame(all_movies, columns=['排名', '电影名', '评分', '评分人数'])print(df)# 输出表格
df.to_excel('top250_movies.xlsx', index=False)