python程序员专用壁纸_程序员如何一键“Get”高清壁纸?

原标题:程序员如何一键“Get”高清壁纸?

89912910961f4ca4a4ab23248e88dfb9.jpeg

作者 | 沈仲强

责编| 郭 芮

Unsplash是个高清摄影图片的网站,里面的照片非常精美,分辨率也很高。最重要的是,所有的照片都没有版权,无须向原作者申请授权,即可任意使用。

最近闲暇的时候写了个爬虫爬了下Unsplash上的那些高赞的壁纸,爬虫原理非常简单,就是爬取所有的壁纸,然后筛选那些赞数最高的图片。

第一步我们爬取Unsplash所有的壁纸图片信息,并存入MongoDB。

代码如下:

defget_image_by_page(page_no):

url = "https://unsplash.com/napi/collections/1065976/photos?page={}&per_page=10&order_by=latest&share_key=a4a197fc196734b74c9d87e48cc86838".format(page_no)

r = requests.get(url, verify= False)

data = r.json()

returndatadef get_images():

page_no = 1

client = pymongo.MongoClient()

db = client[ "unsplash"]

whileTrue:

result = get_image_by_page(page_no)

iflen(result) == 0:

break

db.wallpaper.insert_many(result)

print(page_no)

page_no += 1

time.sleep( 10)

爬下来的数据里面包含了几个重要的字段。

我们最关心的就是likes这个字段,这个里面存了图片的赞数,后续我们筛选高赞图片的时候会用到。

还有两个字段分别是width和height,这是图片的宽度和高度,因为我们这里关注的是桌面壁纸,所以只关心宽度大于高度的那些壁纸。

爬完图片信息后,接下来我们从数据库筛选高赞图片。

代码如下:

def get_top_liked_images():

client = pymongo.MongoClient()

db = client[ "unsplash"]

cursor = db.wallpaper.aggregate([

{ "$match": { "likes": { "$gte": 1000}}}

])

path= os. path.dirname(__file__)

path= os. path.join( path, "wallpaper")

foritem incursor:

url = item[ "urls"][ "raw"]

width = item[ "width"]

height = item[ "height"]

ifwidth <= height:

continue

r = requests.get(url, verify=False)

filename = "{}.jpg". format(int( time. time()))

filepath = os. path.join( path, filename)

with open(filepath, "wb") as f:

f. write(r.content)

print(filepath)

time.sleep( 10)

这里我们会根据图片信息里的URL去下载图片。需要注意的是,如果过于频繁地爬取Unsplash,会导致爬虫被封,所以这里每次下载完都会睡个10秒钟。

以上,就可以爬取出精美的高清壁纸啦。

作者:沈仲强,资深Python程序员,先后供职于Morgan Stanley和ebay,擅长爬虫、Web开发、数据分析。

本文系作者投稿,版权归原作者所有。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值