python requests模块教程及实例(params和文件下载)

——————来自某潮汕人的菜鸟教程

一、应用requests.get方法中的params参数,让自己的url不再那么臭长,使自己的代码看起来更加整齐

上个课程我们的代码中有

res = requests.get(url='https://b.faloo.com/l/0/1.html?t=1&k=%CB%D9%B6%C8')


其实k=%CB%D9%B6%C8这一部分是k=速度  的意思

我们可以代码改成

param={ 't':'1',

'k':'速度'.encode('gb2312')#因为网页的 charset=gb2312

}

res = requests.get(url='https://b.faloo.com/l/0/1.html',params=param)

res_text=res.text

print(res.url)#结果输出https://b.faloo.com/l/0/1.html?t=1&k=%CB%D9%B6%C8


经过这一波操作之后得出结论

url中出现变量=xxx的这些是参数,可以用params进行连接

二、如何下载文件

下载小文件

r = requests.get(image_url)

with open("down.png",'wb') as f:

    f.write(r.content)


实例

爬取网页url="https://b.faloo.com/l/0/1.html?t=1&k=%CB%D9%B6%C8"

爬取任务:下载这张图片


经过查找,这张图片的url="http://img.faloo.com/Novel/100x142/0/195/000195461.jpg"

好!现在我们将这张图片试着下载下来

稍微更改下上面的代码:

image_url="http://img.faloo.com/Novel/100x142/0/195/000195461.jpg"

r = requests.get(image_url)

with open("down.png",'wb') as f:

    f.write(r.content)



结果:在项目目录下生成了down.png

为什么这种模式只能下载小文件呢?

因为这种模式下,从网站接受到的数据是一直储存在你的内存中,只有当你write时才写入硬盘,如果文件很大,那么所占用的内存也是很大的,所以有了以下的大文件下载方法



下载大文件

r = requests.get(image_url, stream=True)

with open("python.pdf", "wb") as f:

    for bl in r.iter_content(chunk_size=1024):

        if bl:

            f.write(bl)

猜你喜欢

转载自blog.csdn.net/m0_37959925/article/details/80516915