使用新浪微博开放平台api同步微博内容至自己网站(2020年Python+IFTTTWebhooks+Crontab定时抓取微博到DayOne)

优采云 发布时间: 2022-02-25 00:07

  使用新浪微博开放平台api同步微博内容至自己网站(2020年Python+IFTTTWebhooks+Crontab定时抓取微博到DayOne)

  本来我一直在用IFTTT自动同步微博到Day One,这样我就可以很方便的把我的日常笔记记录在日记里了。不过从2020年开始,微博不会开放这个API接口。

  自从失败以来,它一直被忽略。最近一时兴起,在网上搜了一下,找到了一种方法——Python + IFTTT Webhooks + Crontab 定期抓取微博到Day One。

  分三步:

  1、下载你的微博内容

  您无需编写代码即可抓取微博。Github 上有现成的脚本,非常强大。将代码下载到本地,然后步骤如下:

  1、打开powershell,切换到weibo-crawler的路径。

  2、安装依赖。前提是安装了python和pip。

  pip install -r requirements.txt

  3、修改配置文件config.json,将user_id_list改成自己的微博id。since_date 设置为 1,表示只取过去 1 天的微博。

  4、运行爬虫,如果微博数据可以下载到本地CSV文件,则表示成功。

  python weibo.py

  2、使用 IFTTT 发送 Day OneIFTTT 网站设置

  在 IFTTT 网站 上设置操作:如果收到 Web 请求,则创建日志。

  

  

  

  本地 Python 脚本

  然后在本地weibo-crawler文件夹中创建一个ifttt.py文件,将以下内容复制进去,注意根据自己的情况修改path、event_name、key。

  import weibo

import csv

import requests

import json

import os

class Ifttt(object):

def __init__(self, path, event_name, key):

self.path = path

self.event_name = event_name

self.key = key

self.text = []

self.image = []

self.num = 0

# 解析本地 CSV 文件

def parse_post_info(self, path):

with open(path, 'r', encoding='UTF-8') as f:

csv_reader = csv.reader(f, delimiter=',')

line_count = 0

for row in csv_reader:

if line_count == 0:

print("Header")

else:

self.text.append(row[2])

self.image.append(row[4].split(",",1))

line_count += 1

self.num = line_count - 1

print(self.text)

print(self.image)

print("Total posts: ", self.num)

# 发送给 IFTTT

def send_notice(self):

url = f"https://maker.ifttt.com/trigger/{self.event_name}/with/key/{self.key}"

for num in range(0, self.num):

payload = {"value1": self.text[num], "value2": self.image[num]}

headers = {"Content-Type": "application/json"}

response = requests.request("POST", url, data=json.dumps(payload), headers=headers)

print(payload)

def main():

config = weibo.get_config()

wb = weibo.Weibo(config)

wb.start()

path = 'weibo/微博名/1234567.csv' # 爬虫爬下来的csv路径

event_name = 'DayOne' # Webhooks 触发器名字

key = 'IF17vD4nqU6wO' # Webhooks 的 key,每个人不同

ifttt = Ifttt(path, event_name, key)

ifttt.parse_post_info(path)

ifttt.send_notice()

os.remove(path)

if __name__ == '__main__':

main()

  3、Win10每日定时任务创建

  前两步完成后,功能已经实现了,然后每次手动触发显然太麻烦了,所以我决定用Win10定时任务每天自动运行一次,下载微博到本地CSV 进行保护,将其发送到 Day One,然后清除本地 CSV 文件。

  设置定时任务的方法如下:

  在计算机-管理-系统工具-任务计划程序库-微软下右键,创建基本任务,设置计划任务名称、触发时间、触发频率、触发程序、触发程序代码和触发程序代码所在路径位于。注意触发代码所在的路径一定不能写,否则运行时无法自动删除最后生成的CSV。

  

  参考Win10定时任务自动运行python程序

  注:本文同时发表于个人博客。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线