网络爬虫(实例)

(一)显示影片基本信息

访问豆瓣电影Top250(豆瓣电影 Top 250),获取每部电影的中文片名、排名、评分及其对应的链接,按照“排名-中文片名-评分-链接”的格式显示在屏幕上。

(二)存储影片详细信息

访问豆瓣电影Top250(豆瓣电影 Top 250),在问题1的基础上,获取每部电影的导演、编剧、主演、类型、上映时间、片长、评分人数以及剧情简介等信息,并将获取到的信息保存至本地文件中。 

import requests
from bs4 import BeautifulSoup
import json
import time# 获取单页的电影信息
def get_movies_info_from_page(url):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"}response = requests.get(url, headers=headers)if response.status_code != 200:print(f"Failed to retrieve data from {url}")return []soup = BeautifulSoup(response.text, 'html.parser')movies = soup.find_all('div', class_='item')movies_info = []for movie in movies:rank = movie.find('em').get_text()  # 排名title = movie.find('span', class_='title').get_text()  # 中文片名rating = movie.find('span', class_='rating_num').get_text()  # 评分link = movie.find('a')['href']  # 详情链接# 打印基本信息print(f"{rank} - {title} - {rating} - {link}")# 保存到列表中movies_info.append({'rank': rank,'title': title,'rating': rating,'link': link})return movies_info# 获取电影详情页的详细信息
def get_movie_detail(movie):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"}response = requests.get(movie['link'], headers=headers)if response.status_code != 200:print(f"Failed to retrieve details from {movie['link']}")return moviesoup = BeautifulSoup(response.text, 'html.parser')# 获取导演、编剧、主演等信息info = soup.find('div', id='info')if info:movie['director'] = info.find('a', rel='v:directedBy').get_text() if info.find('a', rel='v:directedBy') else ''movie['scriptwriters'] = ','.join([a.get_text() for a in info.find_all('a', rel=False) if '编剧' in str(a)])  # 编剧信息movie['actors'] = ','.join([a.get_text() for a in info.find_all('a', rel='v:starring')])  # 主演movie['genre'] = ','.join([a.get_text() for a in info.find_all('span', property='v:genre')])  # 类型movie['release_date'] = info.find('span', property='v:initialReleaseDate').get_text() if info.find('span', property='v:initialReleaseDate') else ''  # 上映时间movie['duration'] = info.find('span', property='v:runtime').get_text() if info.find('span', property='v:runtime') else ''  # 片长movie['votes'] = soup.find('span', property='v:votes').get_text() if soup.find('span', property='v:votes') else ''  # 评分人数movie['summary'] = soup.find('span', property='v:summary').get_text().strip() if soup.find('span', property='v:summary') else ''  # 剧情简介return movie# 爬取所有Top 250的电影信息
def scrape_douban_top_250():base_url = 'https://movie.douban.com/top250?start='all_movies = []for i in range(0, 250, 25):url = base_url + str(i)movies_info = get_movies_info_from_page(url)# 获取每部电影的详细信息for movie in movies_info:movie_detail = get_movie_detail(movie)all_movies.append(movie_detail)# 为了防止被网站封禁,添加一些延时time.sleep(2)# 保存到本地文件with open('douban_top_250_movies.json', 'w', encoding='utf-8') as f:json.dump(all_movies, f, ensure_ascii=False, indent=4)# 运行爬虫
scrape_douban_top_250()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444456.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现:1.1.1 参数传递:1.1.2 增(Insert):1.1.3 删(Delete):1.1.4 改(Update):1.1.5 查(Select&#xff…

贴吧软件怎么切换ip

在网络使用中,有时我们需要切换IP地址来满足特定的需求,比如需要切换贴吧软件IP以进行不同的操作。本文将介绍几种贴吧切换IP地址的方法,帮助用户更好地管理自己的网络身份和访问权限。 1、更换网络环境‌ 通过连接到不同的Wi-Fi网络或使用移…

微服务之间的相互调用的几种常见实现方式对比

目录 微服务之间的相互调用的几种实现方式 一、HTTP HTTP/RESTful API调用工作原理 二、RPC 设计理念与实现方式 协议与传输层 RPC远程调用工作原理 应用场景与性能考量 特点 三、Feign 设计理念与实现方式 协议与传输层 Feign调用的基本流程 Feign调用的工作原理…

钢铁行业3大改造方向 智能仪器亦起到重要作用!

钢铁企业新的改造方向主要包括超低排放改造、能效改造和数字化转型。‌这些政策旨在提升钢铁行业的环保水平、能效和智能化水平。其中智能仪器的加入,为钢铁企业数字化智能化自动化改造带来新的活力。 具体来说,到2027年,钢铁行业将实现以下目…

ubuntu-24.04.1 系统安装

使用VMware虚拟机上进行实现 官网下载地址: https://cn.ubuntu.com/download https://releases.ubuntu.com 操作系统手册: https://ubuntu.com/server/docs/ (里面包含安装文档) 安装指南(详细)&#xff1a…

华为云应用侧Android Studio开发

本文将介绍如何使用AndroidStudio开发APP完成与接入华为云IoTDA设备的对接,包括属性参数获以及取命令下发。 一、鉴权认证 应用侧需要通过IAM服务鉴权,获取token,华为账号创建 IAM 用户, 可以为创建的用户分配权限 认证鉴权_设…

PHP智慧餐饮新风尚点餐系统

智慧餐饮新风尚点餐系统 —— 美食与科技的完美碰撞 🍽️ 开篇:智慧餐饮的崛起 在快节奏的现代生活中,智慧餐饮正逐渐成为我们日常的一部分。随着科技的飞速发展,餐饮行业也在不断创新,力求为顾客提供更加便捷、高效…

深信服上网行为管理AC无法注销在线用户

下图用户认证成功后无法注销 很多入网的用户都是使用的这个账号 针对单个IP强制注销也不生效 解决步骤: 接入管理-用户管理-用户绑定管理-用户绑定 删除绑定免认证的配置 删除后所有用户会强制注销掉,重新登录即可 可添加主页联系方式帮忙远程解决问…

codeforces- 973-div2----补题

1、求最小时间 思路&#xff1a;简单的模拟 木桶效应 #include<iostream> #include<algorithm> using namespace std; typedef long long ll; int dx[] { 0,1,0,-1 }; int dy[] { 1,0,-1,0 }; const ll N 2e5 5; const ll mod 1e9 7; ll a[N]; void solve…

免费又好用的保护网站WAF,基于语义引擎的waf雷池社区版推荐

为什么传统规则防护失效了&#xff1f;&#x1f914; 目前&#xff0c;大多数 Web 应用防火墙&#xff08;WAF&#xff09;依赖规则匹配来识别和阻断攻击流量。然而&#xff0c;随着 Web 攻击的低成本、复杂多样的手段和频繁爆发的高危漏洞&#xff0c;管理人员不得不频繁调整防…

pyQT5+vscode python开发环境搭建

1、下载安装python https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe 注意&#xff1a;高版本python的pyQT5可能有兼容性问题,我之前装的python3.11时pyuic就不工作&#xff0c;就降级为3.9 2、安装pip 及 pyQT python -m ensurepip --default-pip pip i…

蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键

蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键 第一节 硬件解读第二节 CubeMX配置第三节 MDK代码 第一节 硬件解读 扩展模块和ADC模块是一摸一样的&#xff0c;插在主板上。 引脚对应关系&#xff1a; PB6-ROW1 PB7-ROW2 PB1-COLUMN1 PB0-COLUMN2 PA8-COLUMN3 …

骨传导耳机哪个牌子好?2024年度五大高分骨传导机型推荐!

骨传导耳机哪个牌子好&#xff1f;作为专业健身教练&#xff0c;我平日在训练的时候会使用骨传导耳机来听歌&#xff0c;不过&#xff0c;随着骨传导耳机热度逐渐提高&#xff0c;如今市场上骨传导耳机品牌繁多&#xff0c;类型各异&#xff0c;它们的质量差距也很大。很多网红…

【Java】多线程代码案例

多线程代码案例 单例模式初步了解饿汉模式懒汉模式线程安全问题分析存在的问题 生产者消费者模型初识生产者消费者模型初识阻塞队列生产者消费者模型的意义BlockingQueue阻塞队列模拟实现 定时器初识计时器初识Timer类初识 schedule() 方法简易定时器的实现思路讲解代码书写 线…

耳机座接口会被TYPE-C取代吗?

耳机座接口&#xff0c;即传统的3.5mm耳机插孔&#xff0c;一直以来都是音频设备的标准配置。然而&#xff0c;随着科技的发展和用户需求的变化&#xff0c;TYPE-C接口逐渐崭露头角&#xff0c;成为许多设备的主流选择。这一趋势引发了一个重要问题&#xff1a;耳机座接口会被T…

Collection 集合框架

Collection 集合框架 各类集合 Set TreeSet 基于红黑树实现&#xff0c;支持有序性操作&#xff0c;例如根据一个范围查找元素的操作。但是查找效率不如 HashSet&#xff0c;HashSet 查找的时间复杂度为 O(1)&#xff0c;TreeSet 则为 O(logN)。 HashSet 基于哈希表实现&…

php常用的注释符号

如果没有安装vscode和小皮&#xff0c;请点击下方链接安装&#xff1a; Vscode、小皮面板安装-CSDN博客 在学习php过程中&#xff0c;肯定少不了注释&#xff0c;也可以理解为备注的信息&#xff0c;来提醒自己这段代码有什么用&#xff0c;是什么意思等&#xff0c;接下来就介…

【Redis】网络模型(day10)

在本篇文章中&#xff0c;主要是对五种网络模型进行一个简单的介绍&#xff0c;然后对Redis4.0和6.0的网络模型进行一个概述。 用户空间和内核空间 在Linux系统上&#xff0c;分为用户空间、内核空间和硬件设备。硬件设备主要包括CPU、内存、网卡等物体&#xff0c;内核应用去…

QT开发--QT基础

第0章 QT工具介绍 0.1 编译工具 uic&#xff0c;rcc&#xff0c;moc&#xff0c;qmake 都是 qt 的工具 uic 主要是 编译 .ui文件 -> ui_xxx.h //.ui文件 .h rcc 主要是 编译 资源文件.qrc文件 -> xxx.rcc …

SpringBoot3.3 优雅启停定时任务

定时任务是非常常见的功能,在一个复杂的应用程序中,如何优雅地管理这些定时任务的启动与停止尤为重要。 Spring Boot 提供了强大的任务调度支持,通过@Scheduled注解可以轻松地创建定时任务,并且可以通过配置来灵活地管理这些任务的执行环境。在本文中,我们将深入探讨如何…