python爬取精美壁纸,妹子夸我好棒呢|Python 主题月
先上效果图
先说事情经过:是这样子的,女朋友超级喜欢帅哥明星。她就问我,能不能做一个程序,把某位帅哥明星的照片给下载下来,再慢慢挑选作为壁纸。
好家伙,当着我面,还这么花痴。本想直接拒绝,说我不会。但是出来工作也好几年了,说不会又显得我很菜。到底怎么办呢?我觉得,就做一个爬取图片的程序。但是我不爬帅哥,我就爬海贼王。诶,我有技术,我不做,我就是玩。
说干就干。
需要头文件
import re
import requests
import os
因为爬虫需要用到请求网络部分,所以需要这两个包,没有的话自行下载即可。而os是用于操作系统用的,这里是保存图片。
完整的请求
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=='+name+'+&pn='+str(i*30)
result = requests.get(url,headers=headers)
dowmloadPic(result.content.decode(), name)
这里细心的朋友是会发现到其实百度图片是分动态加载和静态加载的。只需要把index改成flip就可以进行静态加载。这样子爬取页面还能翻页,简单了许多。
得到了html之后需要用到正则表达式
pic_url = re.findall('"objURL":"(.*?)",',html,re.S)
re.findall是使用正则表达式,这里没有什么好说的。可以自行深入了解下findall的用法。
图片下载
fp = open(dir, 'wb')
fp.write(pic.content)
fp.close()
最后取得的图片是需要保存到本地硬盘,我们只需要把路径设置好就行。
完整代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
import requests
import os
def dowmloadPic(html, keyword,i):
pic_url = re.findall('"objURL":"(.*?)",',html,re.S)
abc=i*60
print('找到关键词:' + keyword + '的图片,现在开始下载图片...')
...完整代码:请移步到,公众号:诗一样的代码
dir = r'D:\image\i' + keyword + '_' + str(abc) + '.jpg'
if not os.path.exists('D:\image'):
os.makedirs('D:\image')
fp = open(dir, 'wb')
fp.write(pic.content)
fp.close()
abc += 1
if __name__ == '__main__':
#word = input("Input key word: ")
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}
name = input('输入下载图片的名字')
num = 0
x = input('您要爬取几张呢?,n*60')
for i in range(int(x)):
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=='+name+'+&pn='+str(i*30)
result = requests.get(url,headers=headers)
dowmloadPic(result.content.decode(), name,i)
print("下载完成")
细心的同学可以发现,我们只需要输入不同的关键字,就可以爬取不同的图片。到时候我再把关键词固定为“海贼王”。然后再发给女朋友。这样子就可以实现了技术,但是爬出来的图片却是海贼王。
这个爬虫入门这么简单,你们学废了吗?
各位大佬,原创不易,留个赞再走呗。
转载自:https://juejin.cn/post/6979822433322663972