python爬虫学习DAY1_Requests库

本文介绍了Requests库的基本使用方法,包括页面爬取、访问受限网站、搜索引擎关键字提交、图片爬取与存储等示例。总结了GET、POST等HTTP请求方法及其参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Requests库

学习自mooc的python爬虫课程后的一些小整理。
本文将从课程给出的几个实例入手整理,并最后附有摘自python网络爬虫学习笔记(一)Request库的部分对request库函数及可选的控制访问方式(kwargs)加以总结

eg1:页面爬取框架

import requests
def getHTMLText(url):
	try:
		r = requests.get(url)
		r.raise_for_status()
		r.encoding = r.apparent_encoding
		return r.text
	except:
		return"error"		
	if __name__ == "__main__":
		url = "http://www.baidu.com"v 

调用(访问sublime text support)

print(getHTMLText("http://www.sublimetext.cn/support"))
input()

输出结果
在这里插入图片描述
eg2:访问对robots有限制的网站

import requests
url = "https://www.amazon.cn/dp/B008H4SLV6?ref_=Oct_DLandingSV2_PC_8c66f1d9_1&smid=A2EDK7H33M5FFG"
def maskHTML(url):
	try:
		kv = {'user-agent':'Mozilla/5.0'}
		r = requests.get(url,headers=kv)
		r.raise_for_status()
		r.encoding = r.apparent_encoding
		return r.text[1000:2000]
	except:
		return "error"
print(maskHTML(url))
input()

以这个访问亚马逊网站商品页面的代码为例:

kv = {'user-agent':'Mozilla/5.0'}
r = requests.get(url,headers=kv)

不同点就是这两行,
get及request的其他函数都有几个参数,以get为例:get(url,params=none,**kwarys),可用来传递url参数,将在几个例子后做总结一起比较。

eg3:对搜索引擎关键字的提交

import requests
keyword = "python"
def search(keyword):
	try:
		kv = {'wd':keyword}
		r = requests.get("http://www.baidu.com/s",params=kv)
		r.raise_for_status()
		return len(r.text)
	except:
		return "error"
print(search(keyword))
input()

在这里插入图片描述
可以看到,百度对关键字的搜索是通过url最后wd=“XXX”部分来进行的
所以我们可以用requests对url进行修改从而达到搜索的目的

eg4:图片爬取与储存

import requests
import os
url = "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1398687258,1630323367&fm=11&gp=0.jpg"
root = "G://python//"
path = root + url.split('/')[-1]
def saveimg(root,path,url):
	try:
		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()
				return "success"
		else:
			return "existed"
	except:
		return "failed"
print(saveimg(root,path,url)) 
input()

若需要从网页上保存图片,我们需要有图片的网址(url),以及保存到本地的根目录(root),及文件名(path),所以我们构造的函数saveimg需有这三个函数(当然,如果指定了根目录和文件名,就只需传url)

with open(path,'wb') as f:
	f.write(r.content)
	f.close()

这段是把图片转换为二进制形式写入文件

小结:
1.七个函数

库中支持REQUEST, GET, HEAD, POST, PUT, PATCH, DELETE共7个方法。其中REQUEST方法为基础方法,其它六种方法均通过调用REQUEST方法实现。为了编写程序的便利性,提供了这额外6个方法。我们首先看一下这6个方法的含义,及其在库中对应的函数:
GET:请求指定的页面信息,对应requests.get()
HEAD:只请求页面的头部,对应requests.head()
POST:请求服务器接收所指定的文档作为对所标识的URI的新的从属实体,对应requests.post()
PUT:从客户端向服务器取代指定的文档的内容,对应requests.put()
PATCH:与PUT功能类似,不同之处在于PUT提交信息的方式是截断的,而PATCH可以进行局部更新。因此与PUT相比,在某些情况下,PATCH可以节省网络带宽。对应requests.patch()
DELETE:请求服务器删除指定页面,对应requests.delete()

2.函数参数详解
requests.request(method, url, **kwargs)
requests.get(url, params = None, **kwargs)
requests.head(url, **kwargs)
requests.post(url, data = None, json = None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.delete(url, **kwargs)

其中method为请求方式,对应为’GET’, ‘HEAD’, ‘POST’, ‘PUT’, ‘PATCH’, ‘delete’, 'OPTIONS’七种方式。
**kwargs为13个可选的控制访问方式,包括:
params:字典或字节序列,可以作为参数增加到url中
data:字典、字节序列或文件对象,作为Request的内容
json:JSON格式的数据,作为Request的内容
headers:字典,为HTTP定制头
cookies:字典或CookieJar,Request中的cookie
auth:元组类型,支持HTTP认证功能
files:字典类型,用于传输文件
timeout:设定超时时间(以秒为单位)
proxies:字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects:True/False,默认为True,为重定向开关
stream:True/False,默认为True,获取内容立即下载开关
verify:True/False,默认为True,认证SSL证书开关
cert:本地SSl证书路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值