Python爬虫入门教程01之爬取豆瓣Top电影

yizhihongxing

Python爬虫入门教程01之爬取豆瓣Top电影

本次教程将会教你如何使用Python编写一个简单的爬虫程序,用于爬取豆瓣电影Top250的数据。本教程将会覆盖以下主题:

  1. 项目简介
  2. 准备工作
  3. 利用Requests模块获取网页内容
  4. 使用BeautifulSoup解析网页
  5. 代码实现
  6. 结束语

1. 项目简介

这个项目旨在教你如何使用Python编写一个简单的爬虫程序,用于爬取豆瓣电影Top250的数据。通过本项目,你将学会如何利用Python中的Requests和BeautifulSoup等常用库来获取和解析网页信息。本项目涵盖以下主要内容:

  • 利用Requests模块请求网页信息
  • 使用BeautifulSoup解析网页内容
  • 解析电影名称、年份、评分等信息
  • 将结果输出保存至CSV文件

2. 准备工作

在开始编写爬虫之前,需要进行一些准备工作:

  • 安装Python解释器(本项目基于Python3.x版本编写)
  • 安装相关库(包括Requests和BeautifulSoup)

3. 利用Requests模块获取网页内容

首先,我们需要从豆瓣电影Top250的网页上获取数据。我们将使用Python中的Requests库来请求网页信息。下面是一个简单的示例代码:

import requests

url = 'https://movie.douban.com/top250'

# 发送Get请求,获取网页内容
response = requests.get(url)

# 输出网页内容
print(response.text)

以上代码中,我们首先导入了requests库,并定义了要请求的url。然后,我们使用requests.get()方法来发送请求,并将得到的响应对象保存在response变量中。最后,我们使用response.text属性来获取网页内容,并将结果打印输出。

4. 使用BeautifulSoup解析网页

接下来,我们需要使用BeautifulSoup库来解析网页内容。以下是一个简单的示例代码:

import requests
from bs4 import BeautifulSoup

url = 'https://movie.douban.com/top250'

# 发送Get请求,获取网页内容
response = requests.get(url)

# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')

# 输出网页标题
print(soup.title)

以上代码中,我们导入了requests和BeautifulSoup库,并定义了要请求的url。然后,我们使用requests.get()方法来发送请求,并将得到的响应对象保存在response变量中。

接着,我们使用BeautifulSoup类来解析网页内容,并将解析结果保存在soup变量中。最后,我们使用soup.title属性来获取网页标题,并将结果打印输出。

5. 代码实现

在此处,我们将介绍如何使用Python编写一个完整的豆瓣电影Top250爬虫程序。以下是实现步骤:

  1. 导入相关库(包括Requests和BeautifulSoup)
  2. 定义要爬取的首页URL
  3. 遍历所有页面,获取每一页的电影信息
  4. 解析每一页的电影信息,并将结果保存至CSV文件

实现代码如下:

import requests
from bs4 import BeautifulSoup
import csv

# 定义要爬取的首页URL
url = 'https://movie.douban.com/top250'

# 定义保存结果的CSV文件
csv_file = open('movies.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(csv_file)

# 写入标题行
writer.writerow(['电影名称', '评分', '评价人数', '年份', '导演', '主演', '电影类型'])

# 遍历所有页面,获取每一页的电影信息
for page in range(10):
    url = f'https://movie.douban.com/top250?start={page*25}&filter='
    response = requests.get(url)

    # 解析页面内容
    soup = BeautifulSoup(response.text, 'html.parser')
    movie_list = soup.find_all('div', class_='hd')

    # 解析每一页的电影信息,并将结果保存至CSV文件
    for movie in movie_list:
        movie_name = movie.a.span.text.strip()
        movie_url = movie.a['href']

        movie_response = requests.get(movie_url)
        movie_soup = BeautifulSoup(movie_response.text, 'html.parser')

        rating_num = movie_soup.find('strong', class_='ll rating_num').text
        rating_people = movie_soup.find('div', class_='rating_sum').a.span.text
        try:
            year = movie_soup.find('span', class_='year').text[1:-1]
        except:
            year = ''
        director = movie_soup.find('a', rel='v:directedBy').text.strip()
        actor_tag = movie_soup.find_all('a', rel='v:starring')
        actors = '/'.join([actor.text.strip() for actor in actor_tag])
        genre_tag = movie_soup.find_all('span', property='v:genre')
        genres = '/'.join([genre.text.strip() for genre in genre_tag])

        writer.writerow([movie_name, rating_num, rating_people, year, director, actors, genres])

# 关闭CSV文件
csv_file.close()

代码实现效果为:爬取豆瓣电影Top250前10页的电影信息,并将结果保存至CSV文件中。CSV文件中包括电影名称、评分、评价人数、年份、导演、主演和电影类型等信息。

6. 结束语

这篇教程简单介绍了如何使用Python爬虫编写一个豆瓣电影Top250爬虫程序,主要使用了Requests和BeautifulSoup两个常用的库。在实际爬虫应用中,还需要注意很多细节问题,比如如何处理异常、如何设置请求头、如何爬取动态生成的页面等等。希望本篇教程对于有志于学习Python爬虫技能的同学有所帮助。

示例1:爬取糗事百科热门段子

import requests
from bs4 import BeautifulSoup

url = 'https://www.qiushibaike.com/text/page/{}/'

for page in range(1, 11):
    response = requests.get(url.format(page), 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 Edge/16.16299'
    })

    soup = BeautifulSoup(response.text, 'html.parser')
    story_list = soup.find_all('div', class_='content')

    for story in story_list:
        print(story.text.strip())

以上代码使用了类似的方式,爬取了糗事百科的热门段子信息,并将结果打印输出。

示例2:爬取舆情信息

import requests
import json

url = 'https://api.informal.ai/channel/article/raw_list'
params = {
    'page': 1,
    'limit': 20,
    'channel_id': 1,
    'start_time': '2022-01-01',
    'end_time': '2022-01-31',
}

headers = {
    'Authorization': 'Bearer xxxxxxxx',
    'Access-Control-Allow-Origin': '*',
}

response = requests.get(url, params=params, headers=headers)

result = json.loads(response.text)

for article in result['data']:
    print(article['title'], article['content'])

以上代码使用requests库向informal.ai的舆情监测API发送了GET请求,获取了2022年1月1日至1月31日之间的舆情文章信息,并将结果打印输出。需要注意的是,在请求头中需要带上授权Token(由informal.ai提供)才能够正常获得数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫入门教程01之爬取豆瓣Top电影 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 常见的在Python中实现单例模式的三种方法

    当一个对象在程序中只需要存在一个实例时,可以使用单例模式。 在Python中实现单例模式的常见方法有以下三种: 1. 模块方法 这种方法是Python中最常用的单例模式实现方法。Python本身就保证模块在整个程序中只会被导入一次,因此可以将需要单例化的对象放在模块中,其他地方直接导入即可。 下面是一个示例: # singleton_module.py cl…

    python 2023年5月19日
    00
  • Python网络编程之HTTP客户端模块urllib与urllib3

    Python中有两个常用的HTTP客户端模块:urllib和urllib3。本文将详细讲解这两个模块的用法和区别,并提供一些示例。 1. urllib模块 urllib是Python标准库中的一个HTTP客户端模块,可以用于发送HTTP请求和处理HTTP响应。它包含四个子模块:urllib.request、urllib.parse、urllib.error和…

    python 2023年5月14日
    00
  • 一文搞懂python 中的迭代器和生成器

    一文搞懂Python中的迭代器和生成器 什么是迭代器? 在Python中,迭代器是一种访问集合(如列表或元组)内元素的方式,可以逐个访问集合中的每个元素而不会影响其原结构。迭代器不会事先计算出所有的结果,而是在需要访问时逐个生成并返回。因此,迭代器非常适合用于遍历大型集合或无限集合。 迭代器的实现 要实现一个迭代器,需要定义一个类,这个类必须实现两个方法:_…

    python 2023年6月3日
    00
  • Python实现统计给定列表中指定数字出现次数的方法

    下面是 Python 实现统计给定列表中指定数字出现次数的方法的完整攻略。 步骤 首先声明一个列表,列表中包含多个数字; 接着声明一个变量,该变量为需要统计出现次数的数字; 然后使用 list.count(element) 方法统计列表中指定数字出现的次数; 最后输出结果。 下面是 Python 代码示例: # 步骤 1:声明列表 num_list = [1…

    python 2023年6月5日
    00
  • python通过http下载文件的方法详解

    在Python中,我们可以使用urllib库或requests库来通过HTTP下载文件。下载文件时,我们需要注意文件的大小和下载进度,以便正确地下载文件。本文将通过实例讲解如何使用Python通过HTTP下载文件,包括使用urllib库和requests库,以及两个示例。 使用urllib库下载文件 我们可以使用urllib库的urlretrieve方法来下…

    python 2023年5月15日
    00
  • 推荐8款常用的Python GUI图形界面开发框架

    下面我给您详细讲解如何使用8款常用的Python GUI图形界面开发框架。 1. Tkinter Tkinter 是 Python 的标准 GUI 库,因此不需要安装任何其他的包就可以使用。Tkinter 提供了一个简单的方式创建基本的 GUI 应用程序,它包括了一系列的控件,如文本框、按钮、标签和列表框等。 以下是一个简单的 Tkinter 示例程序,在屏…

    python 2023年5月30日
    00
  • 一文了解python 3 字符串格式化 F-string 用法

    一文了解python 3 字符串格式化 F-string 用法 什么是F-string? Python 3.6引入了一种新的字符串格式化方式F-string。F-string可以让你直接在字符串里面嵌入Python表达式,表达式会在运行时被计算并转化为字符串。相比于以往的字符串格式化,F-string更加简洁、易懂、易用。 如何使用F-string进行字符格…

    python 2023年5月18日
    00
  • python异常触发及自定义异常类解析

    Python异常触发及自定义异常类解析 Python 异常 在程序执行的过程中,由于各种原因,会出现意料之外的错误,在Python中,这些错误会以异常的形式抛出。 常见的Python异常有: NameError:引用一个未定义的变量 TypeError:操作或函数用于对象类型不适当 ValueError:操作或函数用于对象有正确类型但错误值 ZeroDivi…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部