当前位置: 首页 > news >正文

【Python】爬虫实战:高效爬取电影网站信息指南(涵盖了诸多学习内容)

本期目录

1 爬取思路

2 爬虫过程

2.1 网址

2.2 查看网页代码

3 爬取数据

3.1 导入包

3.2 爬取代码

01

爬取思路

     \*- 第一步,获取页面内容\*- 第二步:解析并获取单个项目链接  \*- 第三步:获取子页面内容  \*- 第四步:解析子页面相关信息  \*- 第五步:保存json格式数据

02

爬虫过程

2.1 网址

*- 网址``url = 'https://ssr1.scrape.center'``   ``*- 目标`  `爬取电影详情内容

2.2 查看网页代码

*- 网页源代码没有数据``*- 采取正常requests爬取

03

爬取数据

3.1 导入包

import requests``import re``import logging``from lxml import etree``import json``import multiprocessing

3.2 爬取代码

url = 'https://ssr1.scrape.center'``page = 10

*- 爬取函数

def scrape_page(url):`    `try:`        `response = requests.get(url)`        `if response.status_code ==200:`            `return response.text`        `logging.error(f'get invalid status_code{status_code} while scrape {url}')`    `except requests.RequestException:`        `logging.error(f'error occurred: {url}',exc_info = True)

*- 获取页面列表

def get_index_url(page):`    `index_url = f'{url}/page/{page}'`    `return scrape_page(index_url)

*- 解析列表页面获取单个网址:re

`def parse_index(html):`    `pattern = re.compile('<a.*?href="(.*?)".*?class="name">')`    `items = re.findall(pattern,html)`    `for item in items:``        detail_url = url+item`        `yield detail_url`    

*- 爬取子页面

def scrape_detail(url):`    `return scrape_page(url)

*- 解析子页面:xpath

def parse_detail(html):`    `tree = etree.HTML(html)`    `cover = ''.join(tree.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[1]/a/img/@src')).replace('\n','').replace(' ','')`    `name = ''.join(tree.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/a/h2//text()')).replace('\n','').replace(' ','')`    `categories = ''.join(tree.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[1]//text()')).replace('\n','').replace(' ','')`    `published = ''.join(tree.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[2]//text()')).replace('\n','').replace(' ','')`    `drama = ''.join(tree.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[2]/div[4]/p//text()')).replace('\n','').replace(' ','')`    `score = ''.join(tree.xpath('//*[@id="detail"]/div[1]/div/div/div[1]/div/div[3]/p[1]//text()')).replace('\n','').replace(' ','')`    `return {`        `'cover':cover,`        `'name':name,`        `'categories':categories,`        `'published':published,`        `'drama':drama,`        `'score':score`    `}

*- 数据保存

def save_data(data):`    `name = data.get('name')`    `data_path = f'ResultData/{name}.json'`    `json.dump(data,open(data_path,'w',encoding='utf-8'),ensure_ascii=False,indent=2)`    `print(f'{data_path}处理完成')

*- 主函数

def main():`    `for i in range(1,page+1):`        `index_html = get_index_url(i)`        `detail_urls = parse_index(index_html)`        `for detail_url in detail_urls:`            `detail_html = scrape_detail(detail_url)``            data = parse_detail(detail_html)`            `save_data(data)``   ``if __name__ == '__main__':`    `main()


最后学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
在这里插入图片描述
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
在这里插入图片描述
在这里插入图片描述
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述
五、100道Python练习题
检查学习结果。
在这里插入图片描述
在这里插入图片描述
最后,如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。
在这里插入图片描述

相关文章:

【Python】爬虫实战:高效爬取电影网站信息指南(涵盖了诸多学习内容)

本期目录 1 爬取思路 2 爬虫过程 2.1 网址 2.2 查看网页代码 3 爬取数据 3.1 导入包 3.2 爬取代码 01 爬取思路 \*- 第一步&#xff0c;获取页面内容\*- 第二步&#xff1a;解析并获取单个项目链接 \*- 第三步&#xff1a;获取子页面内容 \*- 第四步&#xff1a;解析…...

MATLAB和C++及Python流式细胞术

&#x1f335;MATLAB 片段 流式细胞术&#xff08;Flow Cytometry&#xff09;是一种用于分析细胞或其他颗粒悬浮在流动介质中的方法。MATLAB 可以用来处理和分析流式细胞术的数据&#xff0c;例如用于数据预处理、可视化和分析。以下是一些常见的 MATLAB 处理流式细胞术数据的…...

Vue3 pinia使用

Pinia 是一个现代的状态管理库&#xff0c;专为 Vue 3 设计。它提供了一种简单、直观的方式来管理应用中的全局状态 (就是不同组件都希望去共享的一些变量,函数等)。Pinia 的设计灵感来自于 Vuex&#xff08;Vue 2 的状态管理库&#xff09;&#xff0c;但进行了许多改进&#…...

tdengine学习笔记-建库和建表

目录 建库和建表 创建超级表​ 创建表​ 自动建表​ 创建普通表​ 多列模型 VS 单列模型​ 数据类型映射​ 示例程序汇总​ 在车联网领域的应用 1. 数据模型概述 2. 表结构设计 2.1 静态数据表 2.2 动态数据表 4. 查询数据 4.1 查询单个车辆的数据 4.2 查询多个…...

Django数据迁移出错,解决raise NodeNotFoundError问题

错误出现在&#xff1a; raise NodeNotFoundError(self.error_message, self.key, originself.origin) django.db.migrations.exceptions.NodeNotFoundError: Migration myApp.0003_alter_jobinfo_practise dependencies reference nonexistent parent node (myApp, 0002_renam…...

景联文科技:以全面数据处理服务推动AI创新与产业智能化转型

数据标注公司在人工智能领域扮演着重要角色&#xff0c;通过提供高质量的数据标注服务&#xff0c;帮助企业和组织训练和优化机器学习模型。从需求分析到数据交付&#xff0c;每一个步骤都需要严格把控&#xff0c;确保数据的质量和安全性。 景联文科技是一家专业的数据采集与标…...

MySQL学习/复习7表的内外连接

一、内连接...

Spring Cloud入门笔记2(OpenFeign)

场景&#xff1a; OpenFeign中集成了LoadBalancer,并简化了微服务调用&#xff0c;所以实际上使用该技术 技术栈&#xff1a;OpenFeign 步骤一&#xff1a;导入依赖 <!--openfeign--> <dependency><groupId>org.springframework.cloud</groupId><a…...

小程序中模拟发信息输入框,让textarea可以设置最大宽以及根据输入的内容自动变高的方式

<textarea show-confirm-bar"{{false}}" value"{{item.aValue}}" maxlength"301" placeholder"请输入" auto-height"{{true}}" bind:blur"onBlurTextarea" focus"{{true}}" bindinput"…...

学习HTML第二十九天

学习文章目录 二.单选框三.复选框 二.单选框 常用属性如下&#xff1a; name 属性&#xff1a;数据的名称&#xff0c;注意&#xff1a;想要单选效果&#xff0c;多个 radio 的 name 属性值要保持一致。 value 属性&#xff1a;提交的数据值。 checked 属性&#xff1a;让该单…...

汽车安全再进化 - SemiDrive X9HP 与环景影像系统 AVM 的系统整合

当今汽车工业正面临著前所未有的挑战与机遇&#xff0c;随著自动驾驶技术的迅速发展&#xff0c;汽车的安全性与性能需求日益提高。在这样的背景下&#xff0c;汽车 AVM&#xff08;Automotive Visual Monitoring&#xff09;标准应运而生&#xff0c;成为促进汽车智能化和安全…...

QString 转 char*问题与方法(const_cast的使用问题)

1、背景:今天有QString的变量&#xff0c;将QString的值传递给void func(char * ptr)&#xff0c;于是就有了类似下面这一段离谱的代码 当时我还在想为什么var的值为空了&#xff0c;为什么呢。 2、原因:就是因为右边函数返回的是一个临时指针对象&#xff0c;给到了右边&…...

flink cdc 应用

SQLServer 1. The db history topic or its content is fully or partially missing. Please check database history topic configuration and re-execute the snapshot. 遇到了一下问题&#xff0c;多次尝试&#xff0c;最终发现是数据库大小写要一致。 Caused by: io.deb…...

MyBlog(三) -- APP的应用

文章目录 前言一、APP是什么?二、创建APP三、使用APP1. 注册app2. 添加路由3. 运行过程4. 完善视图函数5. 结果展示 总结 前言 前面我们已经学习了如何创建一个新的项目,并且配置好了项目的启动文件,成功将项目启动! 那么接下来我们的主要任务就是需要完善这个项目中应该包含…...

docker有哪些网络模式

Docker 提供了多种网络模式&#xff08;Networking Modes&#xff09;&#xff0c;每种模式都有其特定的用例和优缺点。以下是 Docker 的几种主要网络模式&#xff1a; 1. Bridge 网络&#xff08;默认&#xff09; 描述&#xff1a;在这种模式下&#xff0c;Docker 创建了一…...

npoi 如何设置单元格为文本类型

ICellStyle style workbook.CreateCellStyle(); var font workbook.CreateFont(); font.FontHeightInPoints 10; //font.FontName "Arial"; font.FontName "仿宋"; style.Alignment NP…...

Vue3、Vite5、Primevue、Oxlint、Husky9 简单快速搭建最新的Web项目模板

Vue3、Vite5、Oxlint、Husky9 简单搭建最新的Web项目模板 特色进入正题创建基础模板配置API自动化导入配置组件自动化导入配置UnoCss接入Primevue接入VueRouter4配置项目全局环境变量 封装Axios接入Pinia状态管理接入Prerttier OXLint ESLint接入 husky lint-staged&#xf…...

DataStream编程模型之数据源、数据转换、数据输出

Flink之DataStream数据源、数据转换、数据输出&#xff08;scala&#xff09; 0.前言–数据源 在进行数据转换之前&#xff0c;需要进行数据读取。 数据读取分为4大部分&#xff1a; &#xff08;1&#xff09;内置数据源&#xff1b; 又分为文件数据源&#xff1b; socket…...

海康IPC接入TRTC时,从海康中获取的数据显示时色差不正确

2021/1 记录海康IPC接入TRTC时的历史日志 从海康sdk接口获取数据&#xff0c;进行解码 org.MediaPlayer.PlayM4.Player.T_YV12;private void setDecodeCB() {Player.getInstance().setDecodeCB(m_iPort, (nPort, data, nDataLen, nWidth, nHeight, nFrameTime, nDataType,…...

『VUE』31. 生命周期的应用(详细图文注释)

目录 在合适的时间进行操作取dom元素利用生命周期模拟网络数据发送代码示例 总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 在合适的时间进行操作 假设网页一颗果树,我们要取dom(果实),一定要在渲染完成后才能取(果实) 通常…...

python小白福音:跟着快马生成的图文指南,轻松搞定vscode环境配置

作为一个刚开始学Python的小白&#xff0c;第一次打开VSCode时完全不知道从哪里下手。各种专业术语看得一头雾水&#xff0c;网上的教程要么太简单要么太复杂。直到发现了InsCode(快马)平台&#xff0c;它帮我生成了这份超级详细的配置指南&#xff0c;现在终于能愉快地写代码了…...

单片机Shell开发避坑指南:从Putty特殊字符处理到内存安全的7个实战经验

单片机Shell开发避坑指南&#xff1a;从Putty特殊字符处理到内存安全的7个实战经验 当你在深夜调试单片机Shell时&#xff0c;突然发现退格键会导致整个系统崩溃&#xff0c;或者用户输入超长字符串后设备莫名其妙重启——这些看似简单的交互问题&#xff0c;往往成为项目交付前…...

DeerFlow资源优化实践:控制Python执行环境内存占用方法

DeerFlow资源优化实践&#xff1a;控制Python执行环境内存占用方法 1. 认识DeerFlow&#xff1a;您的智能研究助手 DeerFlow是一个基于LangStack技术框架开发的深度研究开源项目&#xff0c;它就像是您的个人研究团队&#xff0c;能够帮您完成各种复杂的调研任务。这个工具整…...

CentOS 7 编译 Linux 5.15 内核遇 BTF 报错?别慌,这份保姆级排错指南帮你搞定 dwarves 和 pahole

CentOS 7 编译 Linux 5.15 内核 BTF 报错全攻略&#xff1a;从 dwarves 编译到环境修复 在 CentOS 7 上手动编译较新版本的 Linux 内核&#xff08;如 5.15 系列&#xff09;时&#xff0c;启用 BTF&#xff08;BPF Type Format&#xff09;功能经常会遇到各种依赖问题。本文将…...

LFM2.5-1.2B-Thinking-GGUF环境配置:Docker内服务端口映射与外网访问调试

LFM2.5-1.2B-Thinking-GGUF环境配置&#xff1a;Docker内服务端口映射与外网访问调试 1. 平台简介与核心优势 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。该镜像内置GGUF模型文件和llama.cpp运行时&#xff0c;提供简…...

技术小白也能懂:拆解一个chinahrt自动刷课油猴脚本的代码逻辑与实现原理

技术小白也能懂&#xff1a;拆解一个自动刷课油猴脚本的代码逻辑与实现原理 在数字化学习时代&#xff0c;许多在线教育平台要求用户完成指定课程才能获得相应证书或学分。对于时间紧张的学习者来说&#xff0c;手动完成所有课程视频观看可能成为负担。本文将从一个具体案例出…...

大数据核心知识全解(零基础到Hadoop专家路线)【20260324】001篇

文章目录 大数据核心知识全解(零基础到Hadoop专家路线) 一、为什么会出现大数据?(本质原因) 1. 数据来源爆炸 2. 传统技术扛不住 3. 需求倒逼 二、CNCF 是什么?(云原生核心组织) 它和大数据的关系 三、为什么 Hadoop 会流行?(3个核心原因) 1. 它解决了当时最痛的问题…...

隐私优先方案:OpenClaw本地化部署Qwen3.5-9B处理敏感财报分析

隐私优先方案&#xff1a;OpenClaw本地化部署Qwen3.5-9B处理敏感财报分析 1. 为什么金融从业者需要本地化AI方案 作为一名长期关注金融科技自动化的从业者&#xff0c;我深刻理解处理财报数据时的隐私焦虑。去年尝试使用某云端AI服务分析客户财报时&#xff0c;系统突然弹出&…...

Apache Weex UI手势操作组件:滑动删除与拖拽交互终极指南

Apache Weex UI手势操作组件&#xff1a;滑动删除与拖拽交互终极指南 Apache Weex UI 是一个基于 Vue.js 的跨平台 UI 框架&#xff0c;专门用于构建高性能移动应用。其中&#xff0c;手势操作组件是提升用户体验的关键功能&#xff0c;让应用交互更加自然流畅。&#x1f60a; …...

水塔水位西门子S7-1200PLC和MCGS7.7联机程序博途V16,带io表和注释

水塔水位西门子S7-1200PLC和MCGS7.7联机程序博途V16&#xff0c;带io表和注释&#xff0c;V20变频器接线说明水塔水位控制是工业自动化中常见的应用场景&#xff0c;今天咱们聊聊如何用西门子S7-1200 PLC和MCGS7.7触摸屏搭个联机控制系统。实际项目中遇到过水位传感器信号跳变的…...