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)

读出结果

相关文章
|
7天前
|
JSON API 数据格式
深入浅出:使用Python实现一个简单的RESTful API
【8月更文挑战第51天】本文将引导读者理解RESTful API的基本原理,并通过一个简易的实例展示如何利用Python的Flask框架快速搭建一个RESTful服务。文章以通俗易懂的语言,结合代码示例,逐步讲解API的设计、实现和测试过程,旨在帮助初学者掌握RESTful API的开发方法。
34 11
|
4天前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
27 6
|
3天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
17 3
|
3天前
|
存储 前端开发 API
告别繁琐,拥抱简洁!Python RESTful API 设计实战,让 API 调用如丝般顺滑!
在 Web 开发的旅程中,设计一个高效、简洁且易于使用的 RESTful API 是至关重要的。今天,我想和大家分享一次我在 Python 中进行 RESTful API 设计的实战经历,希望能给大家带来一些启发。
13 3
|
4天前
|
JSON API 数据库
从零到英雄?一篇文章带你搞定Python Web开发中的RESTful API实现!
在Python的Web开发领域中,RESTful API是核心技能之一。本教程将从零开始,通过实战案例教你如何使用Flask框架搭建RESTful API。首先确保已安装Python和Flask,接着通过创建一个简单的用户管理系统,逐步实现用户信息的增删改查(CRUD)操作。我们将定义路由并处理HTTP请求,最终构建出功能完整的Web服务。无论是初学者还是有经验的开发者,都能从中受益,迈出成为Web开发高手的重要一步。
24 4
|
2天前
|
开发框架 JSON 缓存
震撼发布!Python Web开发框架下的RESTful API设计全攻略,让数据交互更自由!
在数字化浪潮推动下,RESTful API成为Web开发中不可或缺的部分。本文详细介绍了在Python环境下如何设计并实现高效、可扩展的RESTful API,涵盖框架选择、资源定义、HTTP方法应用及响应格式设计等内容,并提供了基于Flask的示例代码。此外,还讨论了版本控制、文档化、安全性和性能优化等最佳实践,帮助开发者实现更流畅的数据交互体验。
14 1
|
4天前
|
JSON API 开发者
惊!Python Web开发新纪元,RESTful API设计竟能如此性感撩人?
在这个Python Web开发的新纪元里,RESTful API的设计已经超越了简单的技术实现,成为了一种追求极致用户体验和开发者友好的艺术表达。通过优雅的URL设计、合理的HTTP状态码使用、清晰的错误处理、灵活的版本控制以及严格的安全性措施,我们能够让RESTful API变得更加“性感撩人”,为Web应用注入新的活力与魅力。
15 3
|
6天前
|
JSON API 数据格式
深度剖析!Python Web 开发中 RESTful API 的每一个细节,你不可不知的秘密!
在 Python Web 开发中,RESTful API 是构建强大应用的关键,基于 Representational State Transfer 架构风格,利用 HTTP 卞性能。通过 GET、POST、PUT 和 DELETE 方法分别实现资源的读取、创建、更新和删除操作。示例代码展示了如何使用 Flask 路由处理这些请求,并强调了状态码的正确使用,如 200 表示成功,404 表示未找到资源等。
27 5
|
7天前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
10天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。