【代码片段】使用python爬取豆瓣电影TOP250

简介: 使用python爬取豆瓣电影TOP250
+关注继续查看

使用python爬取豆瓣电影TOP250

import os
import re
import time
import json
import requests

from bs4 import BeautifulSoup

# 爬取分页数据
def douban_page(page_url):
    response = requests.get(page_url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, "html.parser")

        grid_view = soup.find(class_="grid_view")
        grid_view_items = grid_view.find_all("li")

        page_list = []
        for item in grid_view_items:
            # 大部分电影标题栏有两个title标签和一个other标签
            # 但部分电影只有一个title标签,比如top2《霸王别姬》
            titles = item.find_all(class_="title")
            name = titles[0].get_text().strip() # 电影名称
            if len(titles) >= 2:
                alias = titles[1].get_text().strip(" / ") # 电影别名
            else:
                alias = ""

            # 提取电影年份、地区、类型等信息
            p_elem = item.find(class_="bd").find("p", class_="")
                        p_strs = re.findall(r'(.*?)', p_elem.prettify(), re.S)
            p_str = p_strs[0].strip("\n") # 出去两边换行符

            p_items = p_str.split(" / ") # 电影年份、地区、类型分割为列表

            film_year = p_items[0].strip()     # 年份
            film_district = p_items[1]         # 地区
            film_genre = p_items[2].split() # 分类

            # 获取描述(不是全部电影都有描述,比如top239《功夫》,top254《奇迹男孩》)
            quote_elem = item.find(class_="quote")
            if quote_elem:
                description = quote_elem.find(class_="inq").get_text()
            else:
                description = ""

            page_list.append({
                "name": name,
                "alias": alias,
                "year": film_year,
                "genre": film_genre,
                "district": film_district,
                "sort": item.em.text, # 排序
                "link": item.a["href"], # 详情地址
                "score": item.find(class_="rating_num").get_text(), # 评分
                "description": description # 描述(评价)
            })

        return page_list
    return []

# 开始爬取,计算分页
def douban_begin():
    page_number = 1 # 起始页
    page_limit = 25 # 每页显示条数

    film_list = []
    while page_number <= 10:
        page_offset = (page_number - 1) * page_limit # 计算当前页起始条数
        page_url = "https://movie.douban.com/top250?start=%s" % page_offset
        page_list = douban_page(page_url)

        # 把分页结果放入列表
        for item in page_list:
            film_list.append(item)

        page_number += 1
        time.sleep(2) # 休眠2秒防止频繁执行

    return film_list

if __name__ == "__main__":
    film_list = douban_begin()

    # 数据以文件形式保存到本地
    fileObj = open("json/douban_film.json", "w")
    fileObj.write(json.dumps(film_list))
    fileObj.close()
    exit()

注:爬取页面之前需要先分析页面,找到自己需要的数据信息。该代码只是把爬取结果放到了本地文件,可以根据自己的需求存到数据库等合适的位置。
最后:豆瓣会封禁IP,请谨慎操作。

相关文章
|
1月前
|
数据采集 数据可视化 Python
解析python爬取Ebay数据的方式
解析python爬取Ebay数据的方式
|
3月前
|
数据采集 Python
python 爬虫 佛山区域,爬取餐厅的商户联系人公开号码,实例脚本
python 爬虫 佛山区域,爬取餐厅的商户联系人公开号码,实例脚本
|
3月前
|
定位技术 API Python
python 爬取餐厅的商户联系人公开号码,连续爬5页,实例脚本
python 爬取餐厅的商户联系人公开号码,连续爬5页,实例脚本
|
4月前
|
数据采集 Python
Python的Requests来爬取今日头条的图片和文章
Python的Requests来爬取今日头条的图片和文章
|
4月前
|
数据采集 Python
用python爬取百度上的特定图片
用python爬取百度上的特定图片
47 1
|
4月前
|
数据采集 运维 测试技术
如何使用Python爬取网站进行性能测试
网站性能测试是一种评估网站的响应速度、稳定性、可靠性和资源消耗的方法。网站性能测试可以帮助网站开发者和运维人员发现和解决网站的性能瓶颈,提高用户体验和满意度。本文将介绍如何使用Python编写一个简单的爬虫程序,来模拟用户访问网站的行为,并收集和分析网站的性能数据。
如何使用Python爬取网站进行性能测试
|
4月前
|
数据采集 XML 数据库
使用Python爬取网站数据并进行图像处理
在互联网时代,网站数据是一种宝贵的资源,可以用于分析、挖掘、展示等多种目的。但是,如何从海量的网页中提取我们需要的数据呢?Python是一种强大而灵活的编程语言,它提供了许多用于爬虫和图像处理的库和工具,可以帮助我们实现这一目标。本文将介绍如何使用Python爬取网站数据并进行图像处理的基本步骤和方法。
261 0
使用Python爬取网站数据并进行图像处理
|
4月前
|
数据采集 编解码 JSON
使用Python进行网站数据爬取和视频处理
在互联网时代,我们经常需要从网站上获取数据并进行分析或处理。有时候,我们还需要对视频数据进行一些操作,比如剪辑、转码、合成等。Python是一门非常适合做数据分析和视频处理的编程语言,它有很多强大的库和工具可以帮助我们完成这些任务。本文将介绍如何使用Python的requests模块爬取网站数据并进行视频处理的方法和步骤。
使用Python进行网站数据爬取和视频处理
|
4月前
|
Web App开发 数据采集 存储
如何使用Selenium Python爬取动态表格中的多语言和编码格式
Selenium是一个用于自动化Web浏览器的工具,它可以模拟用户的操作,如点击、输入、滚动等。Selenium也可以用于爬取网页中的数据,特别是对于那些动态生成的内容,如表格、图表、下拉菜单等。本文将介绍如何使用Selenium Python爬取一个动态表格中的多语言和编码格式的数据,并将其保存为CSV文件。
如何使用Selenium Python爬取动态表格中的多语言和编码格式
|
4月前
|
数据采集 存储 Web App开发
如何使用Selenium Python爬取动态表格中的复杂元素和交互操作
Selenium是一个自动化测试工具,可以模拟浏览器的行为,如打开网页,点击链接,输入文本等。Selenium也可以用于爬取网页中的数据,特别是那些动态生成的数据,如表格,图表,下拉菜单等。本文将介绍如何使用Selenium Python爬取动态表格中的复杂元素和交互操作。
如何使用Selenium Python爬取动态表格中的复杂元素和交互操作
推荐文章
更多