[PYTHON] Ich habe mit Scrapy- und GitHub-Aktionen eine Listenseite für Kindle Prime Reading erstellt

Hintergrund

Während ich nicht ausgehen wollte, nahm ich an einem erstklassigen Mitglied von Amazon teil, aber ich benutze es selten, außer um Reis und Getränke zu kaufen. Erst neulich habe ich angefangen, das Privileg Prime Reading zu nutzen. Ich würde gerne sehen, welche Art von Büchern ich lesen kann, aber das Überprüfen von Seite zu Seite ist immer noch mühsam. Deshalb habe ich mit Scrapy eine Liste / Suchseite gestartet.

Gehen Sie hier: https://kpr.gimo.me/

Was Sie verwenden

Entwicklungsfluss

Scrapy Sie können Spider schreiben, um die Datenerfassung, -extraktion usw. zu definieren. Klicken Sie hier für Details: https://github.com/masakichi/KindleSpider/blob/master/KindleSpider/spiders/PrimeReading.py

Nach Abschluss können Sie alle Bücher für etwa eine Minute mit dem Befehl "Scrapy Crawl PrimeReading -o public / output.json" abrufen.

Schreiben Sie eine minimale index.html

Es ist einfach, die von Scrapy erfassten Daten mit dem jQuery-Plugin DataTables auszudrücken, das in HTML gespeichert werden muss. Sie können eine sehr vollständige Tabelle mit etwa 20 Codezeilen erstellen. (Ausgestattet mit Sortier- und Suchfunktionen)

$('#prime-reading').DataTable({
    "paging": false,
    "order": [[4, 'desc']],
    "ajax": { "url": "./output.json", "dataSrc": "", "cache": true },
    "language": {
        "url": "./Japanese.json"
    },
    "columns": [
        { "data": "asin", "visible": false },
        { "data": "title", "render": function (data, type, row) { return `<div><a class="title" data-image="${row.cover}" href="https://www.amazon.co.jp/dp/${row.asin}/" target="_blank">${data}</a></div>` }, "width": "40%" },
        { "data": "author" },
        { "data": "star" },
        { "data": "rating_count" },
        { "data": "price" },
        { "data": "publish_date" },
        { "data": "cover", "visible": false },
    ]
});

Veröffentlicht auf GitHub-Seiten

Sie können auf GitHub Pages basierend auf der obigen Datei index.html und output.json veröffentlichen. Es gibt viele Möglichkeiten, es online zu veröffentlichen, daher werde ich es hier weglassen.

Alles automatisiert mit der Kraft von GitHub Actions

Wenn Sie die Anforderungen wie unten gezeigt in Form von Yaml definieren, können Sie die Site automatisch erfassen, extrahieren und starten, wenn der Code gesendet wird, und zwar jeden Tag um 0:00 UTC (9:00 Uhr japanischer Zeit).

name: publish to gh-pages

on:
  push:
    branches:
      - master
  schedule:
    - cron: "0 0 * * *"

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
      - uses: dschep/install-pipenv-action@v1
      - run: pipenv install
      - run: TZ='Asia/Tokyo' date --iso-8601="minutes" > public/update_time.txt
      - run: pipenv run scrapy crawl PrimeReading -o public/output.json
      - name: Deploy to GitHub Pages
        if: success()
        uses: crazy-max/ghaction-github-pages@v2
        with:
          target_branch: gh-pages
          build_dir: public
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Impressionen

――Es scheint, dass es in Prime Reading viele Magazine gibt. ――Es ist großartig, dass GitHub Actions für 2000 Minuten im Monat bequem und kostenlos ist.

Recommended Posts

Ich habe mit Scrapy- und GitHub-Aktionen eine Listenseite für Kindle Prime Reading erstellt
Ich habe mit Github-Aktionen ein Rad für Windows erstellt
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe eine C ++ - Lernseite erstellt
Ich habe einen Line-Bot mit Python gemacht!
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt
Anfänger: Ich habe einen Launcher mit dem Wörterbuch erstellt
Ich habe ein Tool erstellt, um Slack über Connpass-Ereignisse zu informieren, und es zu Terraform gemacht
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Bereiten Sie einen Pseudo-API-Server mit GitHub-Aktionen vor
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe die Geschwindigkeit der Referenz des Pythons in der Liste und die Referenz der Wörterbucheinbeziehung aus der In-Liste verglichen.
Ich möchte einen Screenshot der Site in Docker mit einer beliebigen Schriftart erstellen
Rufen Sie mithilfe der API eine Liste der GA-Konten, -Eigenschaften und -Ansichten als vertikale Daten ab
Was ich durch das Starten einer Foto-Site mit Verwaltungsdaten und mehreren APIs gelernt habe
Ich habe einen Anmelde- / Abmeldevorgang mit Python's Bottle durchgeführt.
Ich habe ein Schwellenwertänderungsfeld für Peppers Dialog erstellt
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe versucht, Daten aus einer Datei mit Node.js zu lesen.
Ich habe mit Ren’py ein Einführungsspiel für das Schulfest gemacht
Ich habe versucht, Python (3) anstelle eines Funktionsrechners zu verwenden
Ich möchte einen Sprachwechsler mit Python und SPTK in Bezug auf eine berühmte Site erstellen