——————来自某潮汕人的菜鸟教程
一、应用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)
网友评论