Python网页爬虫爬取豆瓣Top250电影数据——XPath数据解析

在当今互联网时代,数据爬虫已成为学习和研究数据的重要工具。本文将介绍如何使用Python编写一个简单的网页爬虫,爬取豆瓣电影Top250的数据,并使用XPath解析数据。

环境准备

在开始之前,我们需要确保已经安装了相关的第三方库。可以使用以下命令安装 requestslxml

pip install requests lxml
  • requests 用于发送网络请求。
  • lxml 是一个高效的 XML 和 HTML 解析库,支持XPath查询。

爬虫代码示例

以下是使用Python爬取豆瓣电影Top250数据的示例代码:

import requests
from lxml import etree

# 定义爬取豆瓣Top250电影的函数
def fetch_douban_top250():
    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/91.0.4472.124 Safari/537.36'
    }

    # 发送HTTP请求
    response = requests.get(url, headers=headers)

    # 判断请求是否成功
    if response.status_code == 200:
        print("成功获取页面")
        return response.text
    else:
        print("请求失败,状态码:", response.status_code)
        return None

# 使用XPath解析数据
def parse_douban_top250(html):
    # 创建HTML解析对象
    tree = etree.HTML(html)

    # 使用XPath解析电影数据
    movies = tree.xpath('//ol[@class="grid_view"]/li')
    movie_list = []

    for movie in movies:
        title = movie.xpath('.//span[@class="title"]/text()')[0]  # 电影标题
        rating = movie.xpath('.//span[@class="rating_num"]/text()')[0]  # 电影评分
        quote = movie.xpath('.//span[@class="inq"]/text()')
        quote_text = quote[0] if quote else ''  # 电影短评

        movie_data = {
            'title': title,
            'rating': rating,
            'quote': quote_text
        }
        movie_list.append(movie_data)

    return movie_list

# 主函数
def main():
    html = fetch_douban_top250()
    if html:
        movie_list = parse_douban_top250(html)
        for index, movie in enumerate(movie_list, start=1):
            print(f"{index}. {movie['title']} | 评分: {movie['rating']} | 短评: {movie['quote']}")

if __name__ == '__main__':
    main()

代码解析

  1. 发送请求:在fetch_douban_top250函数中,我们使用requests.get方法发送HTTP请求,目标是豆瓣Top250电影页面。为了防止被反爬虫机制封禁,我们添加了一个User-Agent头。

  2. 检查响应:在获取响应后,我们检查HTTP状态码是否为200,表示请求成功。

  3. 数据解析:在parse_douban_top250函数中,我们首先使用lxml.etree将获取的HTML代码转化为可解析的文档对象。随后使用XPath选择器提取电影信息。例如,我们提取电影标题、评分以及短评。

  4. 输出结果:在主函数main中,我们调用上述两个函数,并将提取的电影信息以格式化的方式打印出来。

总结

通过以上介绍,我们实现了一个简单的爬虫,能够自动获取豆瓣Top250电影的标题、评分和短评。需要注意的是,在进行网页爬虫时,应遵循网站的爬虫协议(如robots.txt),并尽量控制请求频率,以减少对目标网站的影响。使用XPath解析数据使得提取信息变得更加高效和灵活,是一种非常实用的方法。希望这篇文章对你学习Python爬虫和数据解析有所帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部