文章目录

  • P站爬虫代码
  • 将图片更新到Github
  • 把代码变成Mac应用程序
    • 1. Python代码 -> 脚本
    • 2.制作新的应用图标
    • 3.替换应用图标
  • 参考

P站爬虫代码

实现方法:
首先在P站日榜页面找到每个图片的data-id,然后进入相应图片的页面,找到图源url爬取原图。

import urllib.request
import ssl
import requests
import re
import time
import os
dir = '/Users/doudou/Desktop/pixiv'def getPixiv():dir_content = os.listdir(dir)  # 获取文件夹内容ssl._create_default_https_context = ssl._create_unverified_context  # 解决不受信任SSL证书问题headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15'}  # 定义headersresponse_1 = requests.get("https://www.pixiv.net/ranking.php", headers=headers)daily_list = response_1.text  # 获取pixiv日榜的html文字with open("daily.txt", "w") as f:f.write(daily_list)ID = re.findall('"data-type=".*?"data-id="(.*?)"',daily_list) #取括号内的片段#print(ID)#获取日榜图片的idpart = "https://www.pixiv.net/artworks/"  # 定义除ID外的部分for site in ID:URL = part + str(site)#print(URL)opener = urllib.request.build_opener()opener.addheaders = [('Referer', URL)]response_2 = requests.get(URL,headers = headers)  # 获取展示页面的html文字html = response_2.text  # 得到文字with open("daily.txt", "w") as f:f.write(html)download_links = "".join(re.findall('"original":"(.*?)"}', html))  # 使用正则表达式得到下载链接download_name = "".join(re.findall('<title>#(.*?) - pixiv</title>', html))download_name = re.sub('[\\\/\*\?\"\:\<\>\|]', '_', download_name) + download_links[-4:]  # 获取图片名字和格式#print(download_links)print(download_name)if download_name in dir_content:print('Image already exists.')  # 本地文件夹中已存在的图片不再爬取continue            urllib.request.install_opener(opener)time.sleep(5)'''增加重连的次数防止报错'''requests.DEFAULT_RETRIES = 100  # 增加重试连接次数s = requests.session()s.keep_alive = False  # 关闭多余连接'''需要提前创建好文件夹'''urllib.request.urlretrieve(download_links, ("/Users/doudou/Desktop/pixiv/" + download_name))  # 将URL文件复制到本地

将图片更新到Github

图片存在本地有丢失的风险,而且存储量大了管理起来麻烦,于是写了一个python shell脚本即时将爬到的图片更新到Github。

实现方法:
使用os库中的os.system()方法,运行shell命令(我写的是Mac的终端命令,根据os不同需进行调整)。将本地Desktop/pixiv里的图片push到关联的远端仓库。

import os
import time
def push2git():cmd = 'cd;cd Desktop/pixiv;ls;git add .;git commit -m ' + '"' + time.strftime('%Y-%m-%d', time.localtime(time.time()))+ '"' +';git push'print(cmd)return os.system(cmd)

完整代码如下:

import urllib.request
import ssl
import requests
import re
import time
import os
dir = '/Users/doudou/Desktop/pixiv'def push2git():cmd = 'cd;cd Desktop/pixiv;ls;git add .;git commit -m ' + '"' + \time.strftime('%Y-%m-%d', time.localtime(time.time())) + \'"' + ';git push'print(cmd)return os.system(cmd)def getPixiv():dir_content = os.listdir(dir)  # 获取文件夹内容ssl._create_default_https_context = ssl._create_unverified_context  # 解决不受信任SSL证书问题headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15'}  # 定义headersresponse_1 = requests.get("https://www.pixiv.net/ranking.php", headers=headers)daily_list = response_1.text  # 获取pixiv日榜的html文字with open("daily.txt", "w") as f:f.write(daily_list)ID = re.findall('"data-type=".*?"data-id="(.*?)"',daily_list) #取括号内的片段#print(ID)#获取日榜图片的idpart = "https://www.pixiv.net/artworks/"  # 定义除ID外的部分for site in ID:URL = part + str(site)#print(URL)opener = urllib.request.build_opener()opener.addheaders = [('Referer', URL)]response_2 = requests.get(URL,headers = headers)  # 获取展示页面的html文字html = response_2.text  # 得到文字with open("daily.txt", "w") as f:f.write(html)download_links = "".join(re.findall('"original":"(.*?)"}', html))  # 使用正则表达式得到下载链接download_name = "".join(re.findall('<title>#(.*?) - pixiv</title>', html))download_name = re.sub('[\\\/\*\?\"\:\<\>\|]', '_', download_name) + download_links[-4:]  # 获取图片名字和格式#print(download_links)print(download_name)if download_name in dir_content:print('Image already exists.')  # 本地文件夹中已存在的图片不再爬取continue            urllib.request.install_opener(opener)time.sleep(5)'''增加重连的次数防止报错'''requests.DEFAULT_RETRIES = 100  # 增加重试连接次数s = requests.session()s.keep_alive = False  # 关闭多余连接'''需要提前创建好文件夹'''urllib.request.urlretrieve(download_links, ("/Users/doudou/Desktop/pixiv/" + download_name))  # 将URL文件复制到本地if push2git() == 0:print('----FINISH----')if __name__ == "__main__":getPixiv()

把代码变成Mac应用程序

每天爬取日榜都要运行.py很麻烦,就想着把它弄成一个Mac上的可执行脚本。对应Windows的.exe文件。

1. Python代码 -> 脚本

打开Mac自带的脚本编辑器


新建脚本写下以下代码:

tell application "Terminal"do script with command "python3 /path/to/your/script.py"
end tell

把/path/to/your/script.py替换成自己写的python代码的绝对路径。
然后储存脚本为应用程序,即可在桌面上找到了。

2.制作新的应用图标

虽然应用程序做好了,也可以直接执行了,但是Mac的默认图标很丑,于是决定替换成刚爬下来了パワー小姐~

首先找一个心仪的图片如下:


裁剪成1:1的正方形,分辨率调成1024,另存为pic.png

呼出终端,新建临时文件夹$ mkdir tmp.iconset,并依次执行如下指令,基于pic.png生成10个不同大小的图片:

sips -z 16 16     pic.png --out tmp.iconset/icon_16x16.png
sips -z 32 32     pic.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32     pic.png --out tmp.iconset/icon_32x32.png
sips -z 64 64     pic.png --out tmp.iconset/icon_32x32@2x.png
sips -z 128 128   pic.png --out tmp.iconset/icon_128x128.png
sips -z 256 256   pic.png --out tmp.iconset/icon_128x128@2x.png
sips -z 256 256   pic.png --out tmp.iconset/icon_256x256.png
sips -z 512 512   pic.png --out tmp.iconset/icon_256x256@2x.png
sips -z 512 512   pic.png --out tmp.iconset/icon_512x512.png
sips -z 1024 1024   pic.png --out tmp.iconset/icon_512x512@2x.png

然后输入$ iconutil -c icns tmp.iconset -o applet.icns生成一个.icns应用图标。

3.替换应用图标

获得图标以后就可以进行替换了,方法如下:

  • 右击之前生成好的python应用,点击显示包内容,进入文件夹。
  • 寻到Contents/Resources ,将其中的applet.icns替换成我们新做好的。
  • 再次用脚本编辑器打开该应用,什么都不做点击存储,会发现桌面上的应用图标改变了!

这样一来就可以每天愉快地欣赏P站日榜了~

参考

灵感来源这里

爬虫代码基本参考这里

另一处爬虫参考

一个P站爬虫错误的解决方法

Mac图标生成参考

Mac应用程序生成参考

Pixiv日榜爬虫的Python脚本和Mac os小程序相关推荐

  1. 记一次对Pixiv日榜的爬虫

    Pixiv爬虫 Pixiv是个啥 爬虫过程 Pixiv是个啥 pixiv是一个以插图.漫画和小说.艺术为中心的社交网络服务里的虚拟社区网站.于2007年9月10日推出第一个测试版.公司总部位于日本东京 ...

  2. Python爬虫系列之爬取某奢侈品小程序店铺商品数据

    Python爬虫系列之爬取某奢侈品小程序店铺商品数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学 ...

  3. python做出来的小程序、可以在win10上面运行_超详细,手把手教你用20行Python代码制作飞花令小程序!...

    原标题:超详细,手把手教你用20行Python代码制作飞花令小程序! 来源:早起Python 作者:陈熹 飞花令是古时候人们经常玩一种"行酒令"的游戏,是中国古代酒令之一,属雅令. ...

  4. 计算机毕业设计Python+uniapp音乐播放微信小程序LW(小程序+源码+LW)

    计算机毕业设计Python+uniapp音乐播放微信小程序LW(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ py ...

  5. python做小程序-【实战案例】利用Python做出趣味版防沉迷小程序

    今天带领大家利用Python做出趣味版防沉迷小程序 查询电脑的所有进程 用Python循环检测电脑软件的运行情况,当发现游戏软件时弹出警告窗口,并截图保存.学会这项技能,就再也不怕孩子偷偷打游戏了.下 ...

  6. 微信 小程序 python 渲染_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版,进阶学习文末加群! 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序. ...

  7. 计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  8. 计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  9. 计算机毕业设计Python+uniapp学生课堂考勤小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp学生课堂考勤小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

最新文章

  1. 'unicodeescape' codec can't decode bytes in position 16-17: malformed \N character escape
  2. 8.程序什么时候应该使用线程,什么时候单线程效率高?
  3. 交换机怎么使用vtp
  4. 图解 Java 线程的生命周期,看完再也不怕面试官问了
  5. 信息加密之信息摘要加密MD2、MD4、MD5
  6. webapi部署到IIS 404错误
  7. windows修改右键菜单显示内容(非所有菜单适用)
  8. canny算子_Canny边缘检测算法
  9. EasyPermisson 动态权限使用例子
  10. 二叉树求到某一个节点路径
  11. 让Windows 2003 Server支持ASP程序
  12. 如何用Carbon Copy Cloner把macOS系统旧硬盘备份到新硬盘上?
  13. Eucalyptus云之面纱
  14. uniapp项目使用mescroll中mescroll-body组件记录
  15. python爬取网页数据(例如淘宝)
  16. Windows下搭建IOS开发环境
  17. 本周最新文献速递20211212
  18. java 将fileoutputstream 文件流保存为文件_Java输出流FileOutputStream使用详解
  19. leetcode 5607. 生成平衡数组的方案数 前缀和
  20. 调用baidu aip

热门文章

  1. html取消居中,HTML中的居中方法
  2. 计算机怎么加网关命令,默认网关怎么设置,详细教您默认网关怎么设置
  3. 如何做一个小程序口令红包功能
  4. Laplacian Loss
  5. esp32驱动ws2815出现的频闪问题
  6. DB2: Reorg之后表中记录在磁盘上存放的顺序
  7. Python个人学习笔记(1)——filter函数
  8. 免费的游戏代理平台可靠吗?
  9. 链接orientdb的图形数据库_文档数据库 OrientDB
  10. 泰勒图的MATLAB实现