Requests库--爬取百度图片(许佳琪)练习

简介

Requests是一个优雅而简单的Python HTTP库

Requests的使用方式非常的简单、直观、人性化,让程序员的精力完全从库的使用中解放出来。

发起请求–10大参数

GET请求

import requests
res= requests.get( )

# 参数及作用:
url = '	'				目标网址 

params = {	}		    请求参数		在requests中自动转ascii码

headers = {	}			请求头

cookies =  {	}		cookies

timeout = 1				设置请求超时时间

allow_redirects = True       重定向(False为关闭)

proxies = {	}				使用代理

verify = True    			开启证书验证(False为关闭)

POST请求

import requests
res= requests.post( )

# 上述GET参数也适用于POST

data = {	}                 自动转ascii码

json = {	} 				有data参数, json数据默认为null

小结:requests库每一个请求方法都有一个对应的API接口,比如GET请求就可以使用get()方法

比如还有put()、delete()、head()、options()等方法,这里暂不介绍

关闭证书验证后,会有一个warning,可使用以下方法关闭警告

# 导包
from requests.packages.urllib3.exceptions import InsecurRequestWarning   
# 屏蔽安全请求警告
requests.packages.urllib3.disable_warnings(	)

响应的查看

res.encoding = 'utf-8'		指定   字符串输出格式编码
res.text				  将相应内容直接转换成字符串      非字节码
res.content 		      查看图片等二进制数据数据,使用此参数
res.status_code		      查看状态码
res.json(	)["headers"]["user-Agent"]  json数据处理,自动转成字典格式

res.headers               

res.cookies

res.url

res.requests.url             请求url

res.requests.headers		请求头信息


requests库中的session对象

import requests

headers = {	}					   初始请求头					
session = requests.session(	)        创建session对象

session.headers = headers			更新请求头信息(包含cookies)

res = session.get( url )             发起请求


# 使用session会根据目标url自动更新请求头,常用于账号登录。

案例

实现下载多页百度图片

import re
import os
import requests


url = 'https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E8%AE%B8%E4%BD%B3%E7%90%AA'
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4209.2 Safari/537.36",
}
res = requests.get(url, headers=headers)

img_urls = re.findall(r'"thumbURL":"(.*?)"', res.text, re.S)

for index,img_url in enumerate(img_urls):
    if not os.path.exists('kikiki'):
        os.mkdir('kikiki')
    filename = 'kikiki/' + str(index) + '.jpg'

    res = requests.get(img_url, headers=headers)
    data = res.content
    with open(filename, 'wb') as f:
        f.write(data)


def save_image(i,a):
    for index,img_url in enumerate(img_urls):
        if not os.path.exists('kikiki'+ str(i)):
            os.mkdir('kikiki'+ str(i))
        # 如果需要保存到指定位置,可在前边指定路径
        filename = 'kikiki'+ str(i)+'/'+str(index) + '.jpg'

        res = requests.get(img_url, headers=headers)
        data = res.content
        with open(filename, 'wb') as f:
            f.write(data)


next_url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=7636996772203065950&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E8%AE%B8%E4%BD%B3%E7%90%AA&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=&copyright=&word=%E8%AE%B8%E4%BD%B3%E7%90%AA&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=1&fr=&expermode=&force=&pn={}&rn=30&gsm=1e&1604055503940='
# 此处左闭右开,只能取3页,可根据自己需求进行调整
for i in range(1, 4):
    new_url = next_url.format(str(i*30))
    res = requests.get(new_url, headers=headers)
    img_urls = re.findall(r'"thumbURL":"(.*?)"', res.text, re.S)
    save_image(i,img_urls)

效果

在这里插入图片描述

关于代理和UA池后续会做介绍,此案例仅用于学习、分享,少量下载,得取技术为重。

对案例代码有疑问或建议之处,欢迎私信或评论。

更多详细内容请见官方文档

官方文档:http://cn.python-requests.org/zh_CN/latest/

英文文档:http://docs.python-requests.org/en/master/api/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是用Python爬虫爬取图片的步骤: 1. 导入需要的requests、os、urllib。 2. 使用requests发送请求,获取网页的HTML源代码。 3. 使用BeautifulSoup解析HTML源代码,获取图片的URL地址。 4. 使用os创建一个本地文件夹,用于存储下载的图片。 5. 使用urllib下载图片,并保存在本地文件夹中。 6. 将上述步骤封装成函数,可用于批量下载图片。 下面是一个简单的代码示例: ``` import requests import os from bs4 import BeautifulSoup import urllib def download_images(url, folder_path): # 发送请求,获取HTML源代码 response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') # 查找所有的图片标签 img_tags = soup.findAll('img') # 创建本地文件夹 os.makedirs(folder_path, exist_ok=True) # 遍历所有图片标签,下载图片并保存到本地文件夹中 for img_tag in img_tags: img_url = img_tag.get('src') if img_url: img_path = os.path.join(folder_path, img_url.split('/')[-1]) urllib.request.urlretrieve(img_url, img_path) # 调用函数,下载图片 download_images('https://www.example.com', 'images') ``` 上述代码中,函数`download_images`接受两个参数:`url`表示要下载图片的网页URL地址,`folder_path`表示要保存下载图片的本地文件夹路径。函数使用requests发送请求,获取HTML源代码,然后使用BeautifulSoup解析HTML代码,查找所有的图片标签,遍历所有图片标签,下载图片并保存到本地文件夹中。最后调用`download_images`函数,传入相应的参数即可完成图片下载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值