Я автор сценарію, пов’язаного у відповіді @ oneqeightyfour. Тож хоча я трохи спізнююся на вечірку, ось модифікована версія сценарію, яку ви можете використовувати.
Я знайшов сайт одним натисканням, який також стверджує, що це зробити, але я не зміг його працювати. Ви можете спробувати це спершу?
Крок 1. Отримайте ключ API Tumblr
Використовувати API набагато простіше, з точки зору програмування, ніж намагатися скребкувати сайт. Крім того, Tumblr T & Cs нахмуриться на масовий доступ до даних, не переходячи через API.
Щоб отримати ключ API:
- Переконайтеся, що ви ввійшли в Tumblr
- Перейдіть на сторінку реєстрації їх OAuth .
Виберіть "Зареєструвати заявку" та скористайтеся такими деталями:
- Назва програми: Знайти всі мої оригінальні публікації
- Опис програми: Знайдіть усі оригінальні публікації на сайті; тобто публікації, які не є веб-журналами
- URL-адреса зворотного дзвінка за замовчуванням: /
Це поверне вас на першу сторінку. Вам буде показаний споживчий ключ OAuth . Скопіюйте це - незабаром ми його використаємо.
Крок 2: Налаштування сценарію
Це злегка змінена версія мого сценарію. Скопіюйте та вставте це в текстовий редактор (наприклад, TextEdit або Блокнот) і збережіть його як originals.py
.
Ви повинні замінити HOSTNAME
змінну URL-адресою свого блогу, а API_KEY
змінну на споживчий ключ OAuth, який ви отримали на кроці 1.
#!/usr/bin/env python
import json
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
HOSTNAME = "alexwlchan.tumblr.com"
API_KEY = "abcdefg"
BASE_URL = (
"http://api.tumblr.com/v2/blog/{hostname}/"
"posts?api_key={key}&reblog_info=true"
) .format(hostname=HOSTNAME,key=API_KEY)
def api_response(url):
req = urlopen(url)
return json.loads(req.read())
jsonresponse = api_response(BASE_URL)
post_count = jsonresponse["response"]["total_posts"]
for count in range(0, post_count, 20):
jsonresponse = api_response("{url}&offset={count}".format(
url=BASE_URL,
count=count))
for post in jsonresponse["response"]["posts"]:
if "reblogged_from_name" not in post:
print(post["post_url"])
print("All finished!")
Крок 3: Запустіть сценарій
Це сценарій Python, який підходить для Python 2 або 3. Якщо ви навколо Google, ви повинні мати змогу знайти інструкції щодо запуску сценаріїв Python для обраної вами операційної системи.
Сценарій роздруковує список URL-адрес, де не отримано жодної інформації про реблог з API Tumblr. У моєму (дуже короткому) тестуванні здавалося, що я зібрав кілька URL-адрес, які насправді були реблогами - я не робив жодного копання, щоб з'ясувати, чому це так.
Веселіться! :-)