打卡学习Python爬虫第二天|Requests的使用

news2024/12/30 2:06:16

一、什么是requests库?

requests库是一个非常流行和强大的HTTP库,它用于在Python中发送HTTP请求。这个库的主要特点是其简洁和易于使用的API,使得发送网络请求和获取响应变得非常简单。

以下是requests库的一些关键特点和使用方法:

  1. 发送HTTP请求requests库允许你发送各种类型的HTTP请求,如GET、POST、PUT、DELETE等。例如,发送一个GET请求只需要一行代码:

    import requests
    response = requests.get('http://example.com')
    
  2. 处理响应:每次发送请求后,requests会返回一个response对象,这个对象包含了响应的所有信息,如状态码、响应头、响应内容等。你可以通过以下方式获取这些信息:

    print(response.status_code)  # 获取响应状态码
    print(response.headers)      # 获取响应头
    print(response.text)         # 获取响应内容

二、安装requests库

文件-->设置-->Python解析器 点击+号搜索下载:

也可以在PyCharm的终端输入pip install requests下载:

 如果下载太慢是应为用的是国外的源,我们可以修改为国内的:

  1. 网易开源镜像:提供了多种开源软件的镜像,网址是 http://mirrors.163.com/。
  2. 清华大学开源软件镜像站:为用户提供高质量的开源软件镜像,网址是 https://mirrors.tuna.tsinghua.edu.cn/。
  3. 中国科学技术大学(USTC)镜像源:提供多种开源软件镜像,网址是 https://mirrors.ustc.edu.cn/。
  4. 东软信息学院镜像站:提供了一些软件镜像,网址是 http://mirrors.neusoft.edu.cn/。
  5. 阿里云镜像:为开发者提供Linux镜像下载服务,网址是 https://developer.aliyun.com/mirror/。

 推荐设置为默认:

python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip

三、实操案例

1、找到想要的url

百度搜索科比,并去除科比后面的字符:

2、使用get获取 
import requests

url="https://www.baidu.com/s?wd=科比"

# 位于浏览器地址栏的url使用get获取
response=requests.get(url)
print(response)

 使用.text获取网页源码:发现并没有获取到源码

 在网页点击右键-->检查找到请求头中的User-Agent:

将User-Agent负值并在代码中添加: 

import requests

url="https://www.baidu.com/s?wd=科比"
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
}
response=requests.get(url,headers=headers)

print(response.text)  # 获取网页源码

成功得到网页源代码:

 3、使用post案例

百度翻译中我们输入一个单词时会出现一些复选项:

鼠标右键-->检查或者F12找到该数据:

可以在标头看到请求的url和请求方式: 

代码:

 import requests

 url = "https://fanyi.baidu.com/sug"
 str = input("请输入要翻译的内容:")

 # 自己的User-Agent,可以在响应标头中看到
 headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 
 like Gecko) Chrome/89.0.4389.90 Safari/537.36"
 }
 # 传入一个需要翻译的单词
 data = {
    "kw": str
 }

 response = requests.post(url, data=data, headers=headers)

 # print(response.text)  会有中文乱码
 print(response.json())

注意为什么写: 

data = {
    "kw": str
 } 

来自于负载的表单数据:

 

成功获取该内容! 

四、 爬取豆瓣喜剧电影数据

1、点击网络找到数据

2、点击标头获取url
3、按需编写程序
import requests

# 请求url  https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=20
# 与https://movie.douban.com/j/chart/top_list+拼接参数params的效果相同
url = "https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=20"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
params = {
    "type": "24",
    "interval_id": "100:90",
    "action": "",
    "start": "0",
    "limit": "20"
}
response = requests.get(url=url, headers=headers, params=params)
print(response.text)

 注意:params中的内容是来源于url的?号后面的参数,同时这些参数也可以在负载中找到,当我们网络滑动页面时,参数会发生改变。

出现新的数据,且参数start发生变化: 

抓取0-19的20条: 

抓取20-39的20条:只需要将start:0改为start:20:

 也可以使用输出成更为规范的json数据:将.text改为.json()

4、保存为json文件

添加代码:

with open("doubanxiju.json", "w", encoding="utf-8") as fp:
    fp.write(response.text)
print("over")

 成功获取数据并保存!

 

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

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

相关文章

四年的功能测试,在这个金九银十的招聘旺季找不到工作怎么办?

昨天周日跟一个读者聊了很久,今天跟大家聊一下他的故事。 他做了4年的功能测试了,最近因为种种原因换工作,结果从8月底到现在快两个月了,面试了十几二十家,收到的offer都不是自己很满意的,很是懊恼&#x…

C语言相关

1. 代码执行过程 1.1 简述编译运行一段代码的过程 1.1.1 预处理 为了接下来能够解释的更加清楚,使用linux 平台下的 gcc 编译器解释。先书写一个非常简单的程序来介绍: 第一步发生的是预编译,使用-E 指令会使程序只进行到预编译指令。经过…

html+css+js 黑神话悟空网页设计与制作

htmlcssjs 黑神话悟空网页设计与制作 网站介绍 1、网站程序:主要使用网页三剑客htmlcssjavaScript实现网页设计与制作,完成网站的功能设计。制作适用于任何浏览器或设备的精美网站。 2、网站素材:搜集或制作适合网页风格和尺寸的图片&#…

Vmware WorkStations 17 ,centos 安装 vmware tools

1.Vmware WorkStations 17 ,安装vmware tools 按钮显示灰色,需重新下载下载vmware tools https://softwareupdate.vmware.com/cds/vmw-desktop/ws/ 根据自身的vmware workstation 版本选择 选择Windows 选择packages 2.搜索Centos8 自带vmware tools ****.iso文件 3.将ISO文…

我主编的电子技术实验手册(16)——认识电容

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

如何利用TRIZ创新思维进行产品的市场需求分析?

实践证明,传统的市场调研方法往往难以触及那些未被言说的“隐性需求”。而今,借助TRIZ(发明问题解决理论)这一强大的创新思维工具,我们不仅能洞悉市场的显性需求,更能解锁隐藏在背后的无限商机。本文&#…

【排序篇】插入排序与选择排序

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1. 排序的概念及其应用1.1 排序的概念1.2 排序的应用场景1.3 常见的排序算法 2.常…

Diffusion Model相关论文解析之(一)Denoising Diffusion Probabilistic Models

目录 1、摘要2、创新点3、主要公式4、主要实现过程 1、摘要 ‌Denoising Diffusion Probabilistic Models (DDPMs) 是一种基于参数化的马尔可夫链的模型,它使用变分推理进行训练,以在有限时间内生成与数据匹配的样本。‌ 这种模型通过逆扩散过程逐渐向样…

Unity开发抖音小游戏广告部分接入

Unity开发抖音小游戏广告部分接入 介绍环境确保开通流量主获取广告位广告部分代码测试如下总结 介绍 最近在使用Unity做抖音小游戏这块的内容,因为要接入广告,所以这里我把我接入广告的部分代码和经验分享一下。 环境确保 根据抖音官方的文档我们是先…

day 28 HTTP协议

一、TCP粘包问题 TCP发送数据是连续的,两次发送的数据可能粘连成一包被接收到 解决粘包问题方法: 1.接收指定长度:(不稳定) 2.睡眠:(效率低) 让每次…

浦发银行上半年增利不增收,新领导能否重夺“对公之王”标签?

去年9月8日,浦发银行原董事长郑杨、原行长潘卫东双双辞职。今年2月,国家金融监督管理总局核准张为忠为浦发银行董事、董事长的任职资格,并于3月核准康杰副行长的任职资格。而行长一职,悬空已久,历经10个月有了新的进展…

SpringBoot和Redis的交互数据操作以及Redis的持久化/删除策略和缓存问题

目录 一、SpringBoot和Redis/MySQL的数据交互 二、Redis的持久化 1、持久化过程保存什么 2、RDB方式 (1)RDB手动 (2)RDB自动 (3)RDB的优点 (4)RDB缺点 3、AOF方式 &#…

指针详解(二)

目录 1. const修饰指针 1)const修饰变量 2)const修饰指针变量 2. 指针运算 1)指针 - 整数 2)指针-指针 3)指针的关系运算 3. 野指针 1)野指针成因 2)规避野指针 4. assert断言 5. 指…

子网掩码是什么以及子网掩码相关计算

子网掩码 (Subnet Mask) 又称网络掩码 (Netmask),告知主机或路由设备,地址的哪一部分是网络号,包括子网的网络号部分,哪一部分是主机号部分。 子网掩码使用与IP地址相同的编址格式,即32 bit—4个8位组的32位长格式。…

《SPSS零基础入门教程》学习笔记——01.SPSS入门

文章目录 1.1 SPSS的窗口1.2 变量属性(1)变量的存储类型(2)变量的测量尺度 1.3 读入数据和保存 1.1 SPSS的窗口 数据窗口 结果窗口语法窗口脚本窗口 1.2 变量属性 定义变量(变量视图) (1&a…

初识MySQL(安装与配置环境)

嗨!今天我们进入一个新的领域---数据库。 首先来个小小铺垫。 我们平时存储东西的时候,一般用到文件。为什么有文件了,还继续要这个数据库呢? 很明显,文件有一些不好的地方,需要数据库来进行补充。 文件…

js中的一键复制功能

文章目录 前言execCommand的兼容性页面代码展示通过下载[clipboard.js](https://clipboardjs.bootcss.com/) 库实现在组件中使用 前言 在前端开发中,有时候需要对内容比如订单编号,货物编号进行复制处理业务,但是编码有比较长,手…

k8s 部署polardb-x集群

前言 体验了基于源码构建的部署polardb-x 单机部署,当然也想体验性能更好的完全分布式集群。这边文章将重点介绍如何部署polardb-x集群 简介 PolarDB-X 是一款面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。其采用 Shared-nothing 与存储计…

[SWPUCTF 2021 新生赛]easy_sql

网址有提示wllm 尝试http://node4.anna.nssctf.cn:28075/?wllm1 我们尝试sqlmap注入一下 sqlmap -u "http://node4.anna.nssctf.cn:28075/?wllm1" --dbs sqlmap -u "http://node4.anna.nssctf.cn:28075/?wllm1" -D test_db -tables sqlmap -u "ht…

el-tree树状控件,定位到选中的节点的位置

效果图 在el-tree 控件加 :render-content"renderContent" 在掉接口的方法中 实际有用的是setTimeout 方法和this.$refs.xxxxxx.setCheckedKeys([industrycodeList]) if(res.data.swindustrylist.length>0){res.data.swindustrylist.forEach(item > {industry…