requests库的基础知识

1.安装。

cmd----------->> pip install requests.

2. 七种操作方法。

# GET        全部信息
# HEADER     仅头部信息

# Put        全部重置 # Patch      局部更新              ## 更改操作用户# POST       后面添加新内容         ## 搜索使用
# DELETE     删除全部

import requests

‘‘‘
r = requests.get("http://www.baidu.com")      # 获得全部文本信息 uRL对应的页面内容
print(r.headers)                              # 头部信息
print(r.text)                                 # seem is also all information
‘‘‘

# requests.head
‘‘‘
r2 = requests.head("http://www.baidu.com")       # just head information
print(r.headers)                                 # head information
print(r2.text)                                   # no ! because just get the head information
‘‘‘

#
payload = {"key1":"value1","key2":"value2"}
r3 = requests.post("http://www.baidu.com",data=payload)
print(r3.text)

2.Response对象的属性。

import requests
r = requests.get("http://www.baidu.com")

print(r.status_code)           # HTTP请求的返回状态,200表示连接成功。404表示失败
print(r.text)                  # HTTP响应内容的字符串形式,即,uRL对应的页面内容。
print(r.encoding)              # 从HTTP header中猜测的响应内容编码方式
print(r.apparent_encoding)     # 内容中分析出的响应内容编码方式
print(r.content)               # 响应内容的二进制形式 (处理图片,视频等使用)

r.encoding = r.apparent_encoding # 转化编码   r.apparent_encoding  根据它的结果转码
print(r.text)

小结:通过 r.status_code 返回的状态码,判断是否连接成功。

3.通用代码框架

def getHTMLText(url):
    try:
        r = requests.get(url,timeout = 30)
        r.raise_for_status()   # 如果状态是200,引发异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "404"

if __name__ == "__main__":      # 没搞懂这个是什么鬼
    url = "http://www.baidu.com"
    print(getHTMLText(url))

4.ROBOTS.txt协议。

实战练习。

1.京东页面的提取。

 1 ‘‘‘
 2 import requests
 3 r = requests.get(‘https://item.jd.com/13115733485.html‘)
 4 print(r.status_code)
 5 print(r.encoding)
 6 print(r.text)
 7 ‘‘‘
 8
 9 ‘‘‘
10 import requests
11 url = ‘https://item.jd.com/13115733485.html‘
12 try:
13     r = requests.get(url, timeout=30)
14     r.raise_for_status()
15     r.encoding = r.apparent_encoding
16     print(r.text[:1000])
17 except:
18     print("404")
19 ‘‘‘
20
21 import requests
22 def getHTMLText(url):
23     try:
24         r = requests.get(url,timeout = 30)
25         r.raise_for_status()   # 如果状态是200,引发异常
26         r.encoding = r.apparent_encoding
27         return r.text
28     except:
29         return "404"
30
31 if __name__ == "__main__":
32     url = "https://item.jd.com/13115733485.html"
33     print(getHTMLText(url)[:1000])

2.亚马逊。

‘‘‘
import requests
r = requests.get("https://www.amazon.cn/gp/product/B00PG0MMLO/ref=s9_acsd_al_bw_c_x_5_w?pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=merchandised-search-5&pf_rd_r=N8WFJMBB60D92VPHAREM&pf_rd_r=N8WFJMBB60D92VPHAREM&pf_rd_t=101&pf_rd_p=26451395-7952-4f3c-b948-09e79ff542f8&pf_rd_p=26451395-7952-4f3c-b948-09e79ff542f8&pf_rd_i=1885051071")
print(r.status_code)                     # 503   连接出错,不是404
print(r.encoding)                        # ISO-8859-1
r.encoding = r.apparent_encoding         # 转码
print(r.text)           # 有反应,说明受限  # 报歉,由于程序执行时,遇到意外错误,您刚刚操作没有执行成功,请稍后重试。或将此错误报告给我们的客服中心

print(r.request.headers)   # 获取请求头部信息     # {‘User-Agent‘: ‘python-requests/2.14.2‘, ‘Accept-Encoding‘: ‘gzip, deflate‘, ‘Accept‘: ‘*/*‘, ‘Connection‘: ‘keep-alive‘}
‘‘‘

‘‘‘
import requests
kv = {‘User-Agent‘:"Mazilla/5.0"}
url = "https://www.amazon.cn/gp/product/B00PG0MMLO/ref=s9_acsd_al_bw_c_x_5_w?pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=merchandised-search-5&pf_rd_r=N8WFJMBB60D92VPHAREM&pf_rd_r=N8WFJMBB60D92VPHAREM&pf_rd_t=101&pf_rd_p=26451395-7952-4f3c-b948-09e79ff542f8&pf_rd_p=26451395-7952-4f3c-b948-09e79ff542f8&pf_rd_i=1885051071"

r = requests.get(url,headers= kv)       # 更改头部信息
print(r.status_code)                    # 200
print(r.request.headers)                # {‘User-Agent‘: ‘Mazilla/5.0‘, ‘Accept-Encoding‘: ‘gzip, deflate‘, ‘Accept‘: ‘*/*‘, ‘Connection‘: ‘keep-alive‘}
print(r.text[:1000])
‘‘‘

import requests
def getHTMLText(url):
    try:
        kv = {‘User-Agent‘: "Mazilla/5.0"}
        r = requests.get(url,headers= kv,timeout = 30)         # headers=
        r.raise_for_status()   # 如果状态是200,引发异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "404"

if __name__ == "__main__":
    url = "https://www.amazon.cn/gp/product/B00PG0MMLO/ref=s9_acsd_al_bw_c_x_5_w?pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=merchandised-search-5&pf_rd_r=N8WFJMBB60D92VPHAREM&pf_rd_r=N8WFJMBB60D92VPHAREM&pf_rd_t=101&pf_rd_p=26451395-7952-4f3c-b948-09e79ff542f8&pf_rd_p=26451395-7952-4f3c-b948-09e79ff542f8&pf_rd_i=1885051071"
    print(getHTMLText(url)[:1000])

3.百度搜索

‘‘‘
import requests
kv = {"wd":"Python"}
r = requests.get("http://www.baidu.com/s",params=kv)
print(r.status_code)                  # 200
print(r.request.url)                  # http://www.baidu.com/s?wd=Python
print(len(r.text))                    # 196429
‘‘‘
import requests
keyword = "Python"
def getHTMLText(url):
    try:
        kv = {‘wd‘:keyword}                                      # 如何添加的????
        r = requests.get(url,params=kv,timeout = 30)              # params
        r.raise_for_status()   # 如果状态是200,引发异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "404"

if __name__ == "__main__":
    url = "http://www.baidu.com"
    print(getHTMLText(url)[:1000])

其他控制参数的使用方法:

实例 查询IP

import requests
url = "http://www.ip138.com/ips138.asp?ip="
r = requests.get(url+"202.204.80.112")           # 对URL内容进行修改
print(r.status_code)
print(r.encoding)
# r.encoding = "utf-8"
print(r.text[:-500])

下载图片:

‘‘‘
import requests
path = "F:/abc.jpg"
url = "http://image.nationalgeographic.com.cn/2017/0721/20170721020325584.jpg"
r = requests.get(url)
print(r.status_code)

with open(path,"wb") as f:         # 文件存储
    f.write(r.content)   # 文件写入          # r.content 响应内容的二进制形式  # 这个句子是什么意思来着??

‘‘‘

import requests
import os

url = "http://image.nationalgeographic.com.cn/2017/0721/20170721020325584.jpg"
root = ‘F://pics//‘
path = root + url.split(‘/‘)[-1]

if not os.path.exists(root):
    os.mkdir(root)
if not os.path.exists(path):
    r = requests.get(url)
    with open(path, ‘wb‘) as f:
        f.write(r.content)
        f.close()
        print(‘文件保存成功!‘)
else:
    print(‘文件已存在。‘)

遇到问题很多,需要多多练习呀!!!

时间: 2024-11-08 22:20:42

requests库的基础知识的相关文章

再探Linux动态链接 -- 关于动态库的基础知识

  在近一段时间里,由于多次参与相关专业软件Linux运行环境建设,深感有必要将这些知识理一理,供往后参考. 编译时和运行时 纵观程序编译整个过程,细分可分为编译(Compiling,指的是语言到平台相关目标文件这一层次)和链接(Linking,指目标文件到最终形成可执行文件这一层次),这个总的过程可称为编译时:就动态链接而言,还存在一个运行时,即程序在被操作系统加载的过程中,系统将该程序需要的动态库加载至内存到程序开始运行的这一段过程.明确这两个过程在一般linux开发中的地位,以及了解每个"

requests库的基础使用

1.requests简介 Requests是一个优雅而简单的Python HTTP库,专为人类而构建,requests的使用方式非常的简单.直观.人性化,让程序员的精力完全从库的使用中解放出来. Requests的官方文档同样也非常的完善详尽,而且少见的有中文官方文档:http://cn.python-requests.org/zh_CN/latest/. 英文文档:http://docs.python-requests.org/en/master/api/ 首先打开requests库的源码 d

爬虫1.1-基础知识+requests库

目录 爬虫-基础知识+requests库 1. 状态返回码 2. URL各个字段解释 2. requests库 3. requests库爬虫的基本流程 爬虫-基础知识+requests库 关于html的知识,可以到w3school中进行了解学习.http://www.w3school.com.cn/html/index.asp,水平有限,这里不多提及. 1. 状态返回码 标志这这一次的请求状态,成功或失败,失败原因大概是什么 200:请求正常,服务器正常返回数据. 不代表爬去到正确信息了 301

计算机科学基础知识(三)静态库和静态链接

三.将relocatable object file静态链接成可执行文件 将relocatable object file链接成可执行文件分成两步,第一步是符号分析(symbol resolution),第二步是符号重新定位(Relocation).本章主要描述这两个过程,为了完整性,静态库的概念也会在本章提及. 1.为什么会提出静态库的概念? 程序逻辑有共同的需求,例如数学库.字符串库等,如果每个程序员在撰写这些代码逻辑的时候都需要自己重新写那么该是多么麻烦的事情,而且容易出错,如果有现成的,

【STM32H7教程】第36章 STM32H7的LPTIM低功耗定时器基础知识和HAL库API

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第36章       STM32H7的LPTIM低功耗定时器基础知识和HAL库API 本章节为大家讲解LPTIM1 – LPTIM5共计5个定时器的基础知识和对应的HAL库API. 36.1 初学者重要提示 36.2 低功耗定时器基础知识 36.3 低功耗定时器的HAL库用户 36.4 源文件stm32h7xx_hal_lptim.c 36.5 总结 36.1 初学者

【STM32H7教程】第57章 STM32H7硬件JPEG编解码基础知识和HAL库API

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第57章       STM32H7硬件JPEG编解码基础知识和HAL库API 本章节为大家讲解硬件JPEG,实际项目用到图像显示的地方比较多,有了硬件JPEG可以大大加速JPEG图片显示速度. 57.1 初学者重要提示 57.2 硬件JPEG基础知识 57.3 硬件JPEG的HAL库用法 57.4 源文件stm32h7xx_hal_jpeg.c 57.5 总结 57

Beautiful Soup 库基础知识

1.安装 cmd------->>pip install beautifulsoup4 2.安装测试. import requests # 导入requests库 from bs4 import BeautifulSoup # 导入美味汤库 r = requests.get("http://python123.io/ws/demo.html") print(r.status_code) # 测试是否连接正常 # print(r.text) # 全部文本信息 demo = r

爬虫基础(requests库的基本使用)--02

什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其实urllib还是非常不方便的,而Requests它会比urllib更加方便,可以节约我们大量的工作.(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库. 默认安装好python之后,是没有安

nginx 基础知识解析

工作架构模型是 nginx做前端反向代理处理请求,后端为lamp(php-fpm也为代理,代理处理动态网页请求,此外我们还可以安装Xcache为php-fpm处理动态网页加速)或者lnmp 基础知识理解 1.代理基础知识 代理:就是客户端请求一个互联网资源时,他没有能力到达真正的服务器,而是通过委托一个能够在互联网上取得各种资源的专业服务器帮他完成它想要请求的资源,并把结果返回给客户端的服务器叫做代理服务器 代理工作原理 分两个阶段,一是客户端请求到代理,代理到服务器取回资源到代理,然后代理服务