文章目录

  • 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. python绘制三维轨迹_Python学习(一) —— matplotlib绘制三维轨迹图
  2. es 同义词 热更新 1.1版本
  3. 糊涂的教授(2015特长生 T3)
  4. datetime 日期_用Hamcrest验证DateTime和日期
  5. 学点 C 语言(38): 函数 - 函数指针
  6. flutter 拖拽布局_Flutter 史上最牛拖动控件 Draggable
  7. 程序员,你得选准跑路的时间!
  8. 2021重庆对口高职高考成绩查询,重庆市2021年高职分类考试成绩明日放榜
  9. 31. Next Permutation
  10. Spring 事务模型
  11. 病历管理系统V 1.0源码分享
  12. 史上MySQL安装配置教程最细,一步一图解
  13. 花瓣图片采集工具研究
  14. 手机TF 卡 无法读取,提示需要格式化
  15. 小白易学--ps拼接图片教程之照片拼图
  16. Linux第7章Gdk及Cairo基础,Linux第7章Gdk及Cairo基础概要1.ppt
  17. (面经)微信群发红包后,怎么判断抢的与发的钱数一致
  18. python模块安装包_制作python模块安装包[转载自刘天斯]
  19. 给Android程序员的一些面试建议
  20. 百度白皮书5.0解读如何合理设置展开全文功能

热门文章

  1. byte转char java_byte怎么转换为char
  2. java byte追加_byte数组追加 java
  3. equals判断字符串内容是否相同,equalsIgnoreCase,忽略英文大小写判断内容是否相同
  4. CSS3----图片倒影效果
  5. 非阻塞connect,错误码:EINPROGRESS
  6. 英语 in, on, at的区别
  7. vscode中文设置后重启还是英文解决(设置中文)Vetur插件
  8. 基于STM32的TM1638的按键控制以及数码管和LED灯的动态扫描
  9. ssm 批量插入案例(MySQL)
  10. 四则混合运算表达式分析程序的原理及其实现