Python第一章(图片与API接口)

简介: Python第一章(图片与API接口)

在当今信息爆炸的数字时代,数据的获取和处理变得日益重要。本篇博客旨在为读者提供一扇窗口,透过它可以看到pc技术的神奇世界。从数据采集的基础知识到高级应用,我们将揭示pv如何使数据获取变得简单、高效,并且功能强大。无论您是初学者还是在寻求深化理解,都可以在这里找到您所需要的知识。让我们一起开始这趟知识之旅,解锁pc给我们的日常生活和工作带来的无限可能。

一、什么是pc

使用编程方式自动化采集数据的过程称为pc

爬虫是使用程序自动化发送请求、获取响应的程序,

主要用来批量抓取(采集)文件或数据

二、使用pc可以做什么?

数据采集:爬虫可以用来采集网站的各种信息,比如新闻文章、图片资料、产品价格、用户评论等。这种数据经常用于商业分析或学术研究。

网页数据提取:Python pc可以从复杂的网页源码中提取所需的数据,例如可从电子商务网站抓取产品信息,从社交网络网站抓取用户行为。

竞品分析:通过自动化的方式抓取竞争对手的信息,如价格、优惠策略、产品变动等,可以进行实时的竞品分析和调整自己的商业策略。

自动登录和操作:Python pc也可以实现自动登录网站,进行一些自动化操作,如自动发帖、自动评论、自动点赞、自动抢等。

搜索引擎爬取:搜索引擎(如 Google、百度)的工作原理也是基于爬虫的,爬过互联网并将网页信息存储到索引数据库中。

数据清洗:爬虫获取的数据通常需要清洗和处理才能用于分析。Python 有很多数据清洗的库可以将爬取的原始数据转化为易于处理的格式。

机器学习和数据挖掘:爬虫获取的数据经常用作机器学习算法的训练集或用于数据挖掘,以发现数据中隐藏的模式。

三、前置知识

基本网络知识

简单流程:打开浏览器-输入网址-看到网页


详细流程:打开浏览器-输入网址并确认-到达服务器-服务器返回源代码-浏览器显示

API接口

应用程序编程接口(英语:Application Programming Interface,简称:API),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

环境安装

pip install requests

四、Requests库

如果你已经安装了requests库,那么你可以直接用Python导入它:

import requests

发送GET请求

GET请求通常用于获取服务器的资源。你可以通过requests.get(url)函数发送GET请求。例如:

response = requests.get('http://httpbin.org/get')  # 此处URL需替换为实际可用的URL

通过response对象,我们可以获取很多信息,如状态码、响应头、响应的html文本等。

print(response.status_code)  # 输出状态码
print(response.headers)  # 输出响应头
print(response.text)  # 输出html文本

发送POST请求

POST请求通常用于向服务器提交数据。你可以通过requests.post(url, data)函数发送POST请求。

相比于GET请求可以隐藏个人信息

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://httpbin.org/post', data=data)  # 此处URL需替换为实际可用的URL

同样,你可以通过response对象获取响应信息。

print(response.status_code)  # 输出状态码
print(response.text)  # 输出返回的信息

添加请求头

有些网站会检查请求的Headers,因此我们需要通过requests.get(url, headers=headers)或requests.post(url, data, headers=headers)函数发送带请求头的请求。

headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('http://httpbin.org/get', headers=headers)  # 此处URL需替换为实际可用的URL

拓展内容

HTTP 状态码由三位数和一个原因短语组成,如果收到的响应中没有包含预期的内容,这些状态码可以帮助确定出现问题的原因和位置。下面是一些最常见的HTTP状态码:

1xx(信息响应):这类状态码代表请求已被接受,需要进一步处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。
100 Continue:服务器已收到请求的一部分,客户端应该继续发送其余的请求。
2xx (成功) :这类状态码表明服务器成功地接受了由客户端发出的请求
200 OK: 请求成功。请求所希望的回应头或数据体将随此响应返回。
201 Created: 请求已被实现,并且有一个新的资源已经依据请求的需要而创建。
3xx (重定向):完成请求所需额外的步骤。
302 Found:请求的资源现在临时从不同的URI响应请求。
304 Not Modified:资源未改变,直接使用浏览器缓存即可。
4xx(请求错误):这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
400 Bad Request:请求无法被服务器理解。
401 Unauthorized:当前请求需要用户验证。
403 Forbidden:服务器了解客户端的请求,但是拒绝执行它。
404 Not Found:请求失败,请求所希望得到的资源未被在服务器上发现。
5xx(服务器错误):这类状态码代表服务器在处理请求的过程中发生了错误。
500 Internal Server Error:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
502 Bad Gateway:服务器是一个网关或者代理服务器,它收到了来自上游服务器的无效响应。
503 Service Unavailable:由于临时的服务器维护或者过载,服务器当前无法处理请求。

五、常用属性

# status_code:获取HTTP响应的状态码
print(response.status_code)
# headers:HTTP响应的头信息,返回的是一个字典
print(response.headers)
# text:HTTP响应的主体内容,此属性会自动对结果进行解码(一般用于文档爬取)
print(response.text)
# content:HTTP响应的二进制内容(一般用非文档爬取,例如:图片,视频)
print(response.content)
json():如果HTTP响应的内容是json,我们可以使用此方法解析json,返回一个字典。
print(response.json())
# cookies:一个CookieJar对象,包含服务器设置的所有cookies
print(response.cookies)
# url:URL of the response
print(response.url)
# encoding:获取响应的编码方式
print(response.encoding)

六、单图下载器案例


这里以爬取百度图标为例:

#爬取流程
#1.导库
import requests #网络请求库
#2.寻址
url = "https://pss.bdstatic.com/static/superman/img/logo/bd_logo1-66368c33f8.png"
#3.请求
res = requests.get(url)
#4.处理
with open("image.png","wb") as file:
    file.write(res.content)

可知找到图标的地址就可以爬取信息

寻址步骤如下:

1.打开想要爬取信息的网站


2.点击键盘上的“F12”,开启开发者模式


3.按如图步骤点击就可以获取想要的信息地址,如此便寻址成功


七、通过API查询想要的信息案例

前面我们已经讲过API接口的作用,下面我们以天气API为例演示爬取过程

#http://tianqiapi.com/index
#导库
import requests
#寻址,api接口url
url = "http://v1.yiketianqi.com/api?appid=52337255&appsecret=D6sbQoqu&city="
while True:
    print("欢迎使用1.0版本天气预报系统!")
    x = input("请输入你要查询的城市:")
    #请求
    res = requests.get(url+x)
    # print(res.text)  #返回了unicode编码
    #把网页的字典列表(json)转化为python的字典和列表,使用.json()方法
    res2 = res.json()
    #索引数据得到想要的内容
    city = res2["city"]
    temp1 = res2["data"]
    temp2 = temp1[0]
    humidity = temp2["humidity"]
    week = temp2["week"]
    wea = temp2["wea"]
    print("您的城市:"+city)
    print(week)
    print("天气是"+wea)
    print("湿度",humidity)
    
#有反爬措施
import requests
url="http://www.baidu.com"
h = {'User-Agent': 'Mozilla/5.0'}
res=requests.get(url,headers=h)
print(res.text)

读出结果

相关文章
|
21天前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
117 1
|
20天前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
2天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
21天前
|
JSON API 数据格式
python 使用 Stable Diffusion API 生成图片示例
本文提供了一个使用Python调用Stable Diffusion API生成图片的示例程序,包括启动API设置、发送POST请求、保存生成的图片和JSON数据,以及如何通过API调用特定模型的说明。
python 使用 Stable Diffusion API 生成图片示例
|
6天前
|
JSON API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
13 6
|
22天前
|
数据安全/隐私保护 Python Windows
三种方法,Python轻松提取PDF中全部图片
三种方法,Python轻松提取PDF中全部图片
|
23天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
21天前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
18 1
|
25天前
|
API 开发工具 网络架构
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
|
26天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~