IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 我们来一起学Python爬虫吧-第一章requests库 -> 正文阅读

[网络协议]我们来一起学Python爬虫吧-第一章requests库

目录

1.安装Requests库

?2.Requests库基本使用方法

GET请求

写入headers参数?

.content保存文件

POST请求

Post上传文件

获取响应数据

?SSL验证错误

身份验证

代理IP

动手练习

按F12键查看源代码

对自己的测试


Hello! 我是PYmili,一个喜欢敲代码的高中生(准确来说是一个小小的职高学生)。在Python中的爬虫模块,可是一个非常有意思的模块和方向。我们可以在网络上采集自己想要的资料或数据,平时只能一条一条复制的数据或下载不了的文件。我们都可以用Python尝试!但是!我们也不能干犯法的事哦!不然就是....你懂的!不仅仅是Python可以写爬虫,其他语言也可以写爬虫!所以爬虫并不是Python独有的。这一期,我们一起来学习requests库的一些用法!


1.安装Requests库

Python中的requests库可是一个非常强大的库!基本的Get和Post请求,文件数据保存等很多功能。可是写爬虫的一把好手!我们来安装它

pip install requests

什么?你不会怎么输入命令?这样这样!

Win键+R键,输入:cmd

?cmd终端输入命令


?2.Requests库基本使用方法

GET请求

import requests

url="http://47.108.189.192"
r=requests.get(url=url)
print(r.text)
print(r.status_code)
print(r.cookies)

requests.get()就是一个向网页发起get请求的方法

其中的 r.text 这个参数就是获取网页HTML源代码的方法。

r.status_code 这个参数获取网页返回状态码如果返回200就是没有出错了!

r.cookies 这个参数就是获取你向网页请求时的cookie码如图

?获取网页json数据

import requests

url="http://47.108.189.192/API/Requests/requests.json"
r=requests.get(url=url)
print(r.json())

但是.text也可以获取网页数据?为什么要用.text呢?看下方实例

博主个人服务器其中一个requests.html文件:47.108.189.192/API/Requests/requests.html

?如果用.text命令去获取网页内容就会使网页json容变成str数据

print(type(r.text))

print(type(r.json()))

如果用.json()就变成json数据。这样就很好处理了。


写入headers参数?

import requests

url="http://47.108.189.192/"

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

r=requests.get(url=url, headers=headers)
print(r.text)

在这段代码里面填写了heraders参数一般网页没有headers参数就无法爬取所以就可以填写User-Agent或Cookies参数。

那么如何获取User-Agent和Cookies参数呢?打开网页按F12键,打开网络选项

图中指出的就是网页原链接请求文件,单击一下它?

里面就有我们想要的所有参数了?


.content保存文件

requests可以保存指定的文件,一般是二进制数据文件。

我们来爬取一张网页图片?tmpfile_03264effc93b4c78848028bca9bb546d.txtmt.jpg (1920×1080) (jsdelivr.net)

import requests
import os

url="https://cdn.jsdelivr.net/gh/PYmili/Image_api/Images/tmpfile_03264effc93b4c78848028bca9bb546d.txtmt.jpg"

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

r=requests.get(url=url, headers=headers)
path,file=os.path.split(url)
try:
    print(url)
    with open(f"{file}", "wb") as f:
        f.write(r.content)
        print("True")
except:
    print("False")

?

?这样文件爬取下来了!怎么样?是不是很简单?


POST请求

?post请求一般用于API请求数据使用,网页上都是get请求post请求就是可以上传参数使服务器或得参数返回

import requests
import os

url="http://httpbin.org/post"

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

data={
    "name":"PYmili",
    "age":"16"
    }#要上传的数据

r=requests.post(url=url, headers=headers, data=data)
print(r.text)

可以看到参数上出现了我们写入的参数,这就是POST请求


Post上传文件

上面说的是Post上传数据,这样我们也可以上传文件。

import requests

url="http://httpbin.org/post"

file={
    "file":open("text.txt", "rb")
    }

r=requests.post(url=url, files=file)
print(r.text)


获取响应数据

requests中我们要写一些请求数据也就是Heraders参数,但是我们也可以获取一些参数

import requests

url="http://47.108.189.192/"


r=requests.get(url=url)
print(r.headers)
print(r.url)

其中我们获取了heraders的参数和url也就是请求的链接。?


?SSL验证错误

由于博主找不到好的案例所以就随便 放一下代码实例一下

import requests

url="https://xxxxx"

r=requests.get(url=url, verify=False)
print(r.status_code)

当报错说SSL错误就可以写上上面参数跳过SSL验证


身份验证

在访问一些网站会遇见需要填写账号密码的情况如:?http://httpbin.org/digest-auth/auth/user/pass

?

import requests
from requests.auth import HTTPBasicAuth

url="http://httpbin.org/digest-auth/auth/user/pass"

r=requests.get(url=url, auth=HTTPBasicAuth("username", "password"))
print(r.status_code)

?这样我们就可以填写用户和密码


代理IP

?当我们爬取一个网站时有时会不成功因为反爬机制及网站禁掉你的ip使其获取不到时就可以使用ip代理,但是你得去买一个代理ip。

import requests

proxies={
    "http":"代理ip",
    "https":"代理ip"
    }

url="https://www.baidu.com"

r=requests.get(url=url, proxies=proxies)
print(r.status_code)

动手练习

我们前面的知识学的差不多了,就可以动手学习一下了,接下来我们爬取一个网站的音乐。

警告:此网站是博主和PYahao个人网站,属于个人财产请勿破坏他人财产!

站点:PYmili And PYahao Home你问我为什么没有域名,我没有?因为我没18。真可怜。

这次要用到正则表达式库,博主在前面写了一篇正则表达式的教程可以参考链接:,Python超详细的正则表达式_PYmili的博客-CSDN博客_python正则表达式

按F12键查看源代码

?

我们可以看见一个audio标签,<source src=xxx就是音乐地址了,那么代码可以这样写?

import requests
import re
import os

url="http://47.108.189.192/"

r=requests.get(url=url)
print(r.status_code)
audio=re.search('<source src="(.*?)".*?</audio>', r.text, re.S)
if audio != None:
    _url=audio.group(1).strip('..')
    print(_url)
    req=requests.get(url=_url)
    print(req.status_code)
    try:
        path,file=os.path.split(_url)
        with open(file, "wb")as f:
            f.write(req.content)
            print("True")
    except:
        print("False")
else:
    pass

?

?完美运行代码,欧耶!


对自己的测试

既然都学了那么多了!应该会爬取网页背景图片了吧!PYmili And PYahao Home? 爬取此网站的所有背景图片练练手吧!

有什么问题可以联系我们Q群:706128290

我是PYmili,我们下次再见,拜拜!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:13:40  更:2021-12-13 13:15:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 7:14:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码