爬虫学习笔记-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.hqwc.cn/news/438857.html

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

相关文章

HCIA真机实验:三层交换机实现vlan之间的通信(内含配置命令)

基础实验示例: 最上面那个交换机作为三层交换机。 下面的两个交换机的配置与之前单臂路由实现vlan之间的通信的配置相同。在这个基础上开启三层交换机 在三层交换机上的配置: 1、创建vlan(底下的交换机有多少个vlan,则三层交换…

算法沉淀——前缀和(leetcode真题剖析)

算法沉淀——前缀和 01.一维前缀和02.二维前缀和03.寻找数组的中心下标04.除自身以外数组的乘积05.和为 K 的子数组06.和可被 K 整除的子数组07.连续数组08.矩阵区域和 前缀和算法是一种用于高效计算数组或序列中某个范围内元素之和的技巧。它通过预先计算数组的前缀和&#xf…

MyBatis详解(4) -- 动态SQL

MyBatis详解(4) 动态SQL两种方式:1.映射器配置文件; 2.注解常用的动态 SQL 元素if元素where元素set元素choose元素(优先,只执行一个)trim元素foreach 元素(批量处理)bind…

【云原生】docker-compose单机容器集群编排工具

目录 一、docker-compose容器编排的简介 二、docker-compose的使用 1、docker-compose的安装 2、docker-compose的配置模板文件yaml文件的编写 (1)布尔值类型 (2)字符串类型 (3)一个key有多个值 &am…

Linux——shell程序的简单实现

shell程序的简单实现 本章思维导图: 注:本章思维导图对应的.xmind和.png文件都已同步导入至资源,可免费查阅 在学习完有关进程的知识后,我们就可以开始尝试自己实现一个简单的shell程序了。 注:在编写简单的shell程…

Spring - 基本用法参考

Spring 官方文档 Spring容器启动流程(源码解读) BeanFactoryPostProcessor vs BeanPostProcessor vs BeanDefinitionRegistryPostProcessor: From java doc: BeanFactoryPostProcessor may interact with and modify bean defin…

openGaussdb5.0单点企业版部署_Centos7_x86

本文档环境:CentOS7.9 x86_64 4G1C40G python2.7.5 交互式初始化环境方式 介绍 openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续…

群晖安装Drive Server与Office实现团队固定公网地址远程办公

文章目录 本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是: 1.Word,PPT,Excel等重要文件存在本地环境,如何在编…

基于Prompt Learning的信息抽取

PTR: Prompt Tuning with Rules for Text Classification 清华;liuzhiyuan;通过规则制定subpromptRelation Extraction as Open-book Examination: Retrieval-enhanced Prompt Tuning Relation Extraction as Open-book Examination: Retrieval-enhance…

防御保护(2-6)

第二天 防火墙 防火墙的主要职责---控制和防护---安全策略---翻过去可以根据安全策略来抓取流量之后做出对应的动作。 防火墙分类 按物理特性划分:软件防火墙、硬件防火墙 按性能划分:百兆级防火墙、千兆级防火墙 按防火墙结构划分:单一主机…

为何PostgreSQL性能优于MySQL?

为何PostgreSQL性能优于MySQL? 在数据库选择过程中,性能是一个至关重要的考虑因素。PostgreSQL和MySQL是两个广泛使用的关系型数据库管理系统,它们在性能方面有着不同的特点。本文将深入探讨为何PostgreSQL在某些方面表现优于MySQL,并解释其…

Kotlin基础——高阶函数和内联函数

高阶函数 高阶函数以另一个函数作为参数或者返回值,其可用Lambda或函数引用表示 函数类型 下面将Lambda存储在sum变量中,其是函数类型 val sum { x: Int, y: Int -> x y }完整的函数类型为(para1,prar2…) -> returnValue val a: Int 0 va…