爬虫学习笔记-get请求获取豆瓣电影排名多页数据★★★★★

1. 导入爬虫需要使用的包

 import urllib.request

 import urllib.parse

 2.创建请求函数

 def create_request(page):

# 定义不变的url部分

base_url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&'

# 根据规律定义data拼接url

data = { 'start':(page-1)*20, 'limit':20, }

#将字典数据编码为字符串

data = urllib.parse.urlencode(data)

url = base_url + data

headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" }

# 请求对象定制

request = urllib.request.Request(url=url,headers=headers)

return request

3.创建获取内容函数

def get_content(request):

# 向服务器发送请求,接收获取响应

response = urllib.request.urlopen(request)

# 将字节形式的内容转码

content = response.read().decode('utf-8') return content 

4.创建下载函数 

 def download(page,content):

fp = open('movie_'+ str(page) + '.json','w',encoding='utf-8')

fp.write(content)

5. 程序入口

 if __name__ == '__main__':

        start_page = int(input('请输入起始页码'))

        end_page = int(input('请输入结束页码'))

        for page in range(start_page,end_page+1):

        request = create_request(page)

        content = get_content(request)

        download(page,content)

 6.展示

 7.源码

import urllib.request
import  urllib.parse# 创建请求函数
def create_request(page):# 源网址# 第一页https: // movie.douban.com / j / chart / top_list?type = 5 & interval_id = 100 % 3A90 & action = & start = 0 & limit = 20# 第二页https: // movie.douban.com / j / chart / top_list?type = 5 & interval_id = 100 % 3A90 & action = & start = 20 & limit = 20# 第三页https: // movie.douban.com / j / chart / top_list?type = 5 & interval_id = 100 % 3A90 & action = & start = 40 & limit = 20# 定义不变的url部分base_url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&'# 根据规律定义data拼接urldata = {'start':(page-1)*20,'limit':20,}#将字典数据编码为字符串data = urllib.parse.urlencode(data)url = base_url + dataheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}# 请求对象定制request = urllib.request.Request(url=url,headers=headers)return  request# 创建获取内容函数
def get_content(request):# 向服务器发送请求,接收获取响应response = urllib.request.urlopen(request)# 将字节形式的内容转码content = response.read().decode('utf-8')return content# 创建下载函数
def download(page,content):fp = open('movie_'+ str(page) + '.json','w',encoding='utf-8')fp.write(content)
# 主程序入口
if __name__ == '__main__':# 手动输入要爬取的起始页码start_page = int(input('请输入起始页码'))end_page = int(input('请输入结束页码'))# 循环遍历每一页数据for page in range(start_page,end_page+1):# 调用接收函数request = create_request(page)content = get_content(request)download(page,content)

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

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

相关文章

算法沉淀——二分查找(leetcode真题剖析)

算法沉淀——二分查找 01.二分查找02.在排序数组中查找元素的第一个和最后一个位置03.搜索插入位置04.x 的平方根05.山脉数组的峰顶索引06.寻找峰值07.寻找旋转排序数组中的最小值08.LCR 173. 点名 二分查找(Binary Search)是一种在有序数组中查找特定元…

【算法专题】二分查找(入门)

📑前言 本文主要是二分查找(入门)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日…

Log4j2的RollingFileAppender详解

RollingFileAppender:实现日志文件自动更新 当满足条件(日志大小、指定时间等)重命名或打包原日志文件进行归档,生成新日志文件用于日志写入。 参数TypeDescriptionnameStringThe name of the Appender.fileNameStringThe name …

幻兽帕鲁服务器怎么收费?4核16G配置

幻兽帕鲁服务器价格多少钱?4核16G服务器Palworld官方推荐配置,阿里云4核16G服务器32元1个月、96元3个月,腾讯云换手帕服务器服务器4核16G14M带宽66元一个月、277元3个月,8核32G22M配置115元1个月、345元3个月,16核64G3…

前言:穿越迷雾,探索C语言指针的奇幻之旅

各位少年,大家好,我是博主那一脸阳光,今天给大家分享指针,内存和地址的使用,以及使用。 前言: 在编程的世界中,若论灵活多变、深邃神秘的角色,非“指针”莫属。如同哈利波特手中的魔…

深度学习快速入门--7天做项目

深度学习快速入门--7天做项目 0. 引言1. 本文内容2. 深度学习是什么3. 项目是一个很好的切入点4. 7天做项目4.1 第一天:数据整理4.2 第二天:数据处理4.3 第三天:简单神经网络设计4.4 第四天:分析效果与原因4.5 第五天:…

机电实务-7

1H431010计量的法律规定 1.器具的分类(P429) (1)计量基准器具 (2)计量标准器具 (3)工作计量器具 2.衡量计量器具的指标(P429) 衡量计量…

基于SpringBoot的玩具租赁系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

Sentinel背后的原理:守卫你的代码安全之旅

大家好,今天我们要聊一聊Sentinel,这个神秘的名词可能让一些小白望而生畏,但别担心,我会用最通俗易懂的语言为你揭开它的神秘面纱。咱们一起深入了解,探讨 Sentinel 是如何守护你的代码安全的。 Sentinel 是什么&…

【原创课程】KUKA机器人与S7-1200进行Profinet通讯

一、KUKA机器人与S7-1200进行Profinet通讯 1、硬件配置 ①硬件配置 名称 型号 数量 PLC S7_1217C 1个 机器人 KUKA_KR-210 1台 2、机器人一侧参数配置 ①添加备选软件包 首先,从KUKA机器人控制柜中将KOP备选软件包拷贝出来,然后在”WorkVi…

【lodash.js】非常好用高性能的 JavaScript 实用工具库,防抖,深克隆,排序等

前言:lodash是一款前端必须要知道的js库,它里面提供了许多常用的功能和实用的工具函数 基本上我参与的项目中都有lodash,只能说lodash太强大了,lodash.js 提供了超过 300 个实用的工具函数,涵盖了很多常见的编程任务 l…

Compose | UI组件(八) | Dialog - 对话框

文章目录 前言Dialog 普通弹框Dialog 普通弹框的使用AlertDialog 警告弹框AlertDialog 警告弹框的使用 总结 前言 在我们传统的UI界面中,经常用到弹框,Compose也有弹框,但是Compose的弹框显示和隐藏和传统的弹框显示(show&#x…

【ascii码对照表】

计算机各种表 ascii码表BCD码(Binary-Coded Decimal‎)有权码-8421码有权码-2421码有权码-5421码无权码-余3码无权码-余3循环码无权码-格雷码 ascii码表 BCD码(Binary-Coded Decimal‎) BCD码也称二进码十进数 BCD用4位二进制数来…

数字图像处理(实践篇)三十六 OpenCV-Python 使用ORB和BFmatcher对两个输入图像的关键点进行匹配实践

目录 一 涉及的函数 二 实践 ORB(Oriented FAST and Rotated BRIEF)是一种特征点检测和描述算法,它结合了FAST关键点检测和BRIEF描述子。ORB算法具有以下优势: ①实时性:能够在实时应用中进行快速的特征点检测和描述。 ②

Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?

本文九河云介绍Windows实例内部自定义域名解析与本地网络域名解析不一致导致无法访问网站的问题描述、问题原因和解决方案。 问题描述 在Windows实例内部通过浏览器无法访问某网站,但在其他设备上可以正常访问,排查发现Windows实例内部自定义域名解析与…

网络安全科普:SSL证书保护我们的网上冲浪安全

当我们在线上愉快冲浪时,各类网站数不胜数,但是如何判定该站点是安全还是有风险呢? 当当当,SSL数字证书登场!! SSL证书也称为数字证书,是一种用于保护网站和用户之间通信安全的加密协议。由权…

Python基础语法——数据输入(input语句)

一、引言 在Python编程中,数据的输入是一个基础且重要的环节。Python的input()函数允许用户从控制台输入数据,是Python中获取用户输入的主要方式。本文将详细解析input()函数的工作原理,以及如何处理和验证用户输入。 二、input()函数的工作…

sass的学习

sass和scss的区别: 实际上是同一种技术的不同叫法。 语法差异,scss是对sass的一种改进,他引入了更接近标准的css语法,更适合直接转换为css代码。 SASS 注释 sass中的多行注释(/**/)会显示在原文中&…

力扣0093——复原ip地址

复原ip地址 难度:中等 题目描述 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有…

Mac安装nvm,安装多个不同版本node,指定node版本

一.安装nvm brew install nvm二。配置文件 touch ~/.zshrc echo export NVM_DIR~/.nvm >> ~/.zshrc echo source $(brew --prefix nvm)/nvm.sh >> ~/.zshrc三.查看安装版本 nvm -vnvm常用命令如下:nvm ls :列出所有已安装的 node 版本nvm…