crawlbaseDocs
Se connecter

Utilisation de l'API

Ajoutez &scraper=stackexchange-thread à une requête Crawling API. Encodez en URL l'URL cible dans le paramètre url.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://stackoverflow.com/questions/2861071/how-to-modify-a-text-file' \
  --data-urlencode 'scraper=stackexchange-thread' -G
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://stackoverflow.com/questions/2861071/how-to-modify-a-text-file',
    {'scraper': 'stackexchange-thread'}
)

import json
data = json.loads(res['body'])
const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });

const res = await api.get(
  'https://stackoverflow.com/questions/2861071/how-to-modify-a-text-file',
  { scraper: 'stackexchange-thread' }
);
const data = JSON.parse(res.body);
require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')

res = api.get('https://stackoverflow.com/questions/2861071/how-to-modify-a-text-file', scraper: 'stackexchange-thread')
data = JSON.parse(res.body)

Exemple d'URL en entrée

N'importe quelle URL de question Stack Exchange fonctionne dans le paramètre url, depuis n'importe quel site du réseau. Par exemple :

https://stackoverflow.com/questions/2861071/how-to-modify-a-text-file
https://superuser.com/questions/441895/automate-opening-html-and-printing-to-pdf
https://askubuntu.com/questions/1206658/why-is-apt-held-back
https://serverfault.com/questions/439471/which-openvpn-cipher-should-i-use
https://mathoverflow.net/questions/44265/is-the-riemann-hypothesis

Structure de la réponse

Corps de la réponse JSON. Les types de champs peuvent être null lorsque la page source omet la valeur.

question
object
La question elle-même.
question.id
string
Identifiant de la question Stack Exchange.
question.title
string
Titre de la question.
question.url
string
URL canonique de la question.
question.body
string
Texte du corps de la question.
question.score
integer
Score de la question (upvotes moins downvotes).
question.viewCount
integer
Nombre de vues de la question.
question.tags
array
Tags appliqués à la question.
question.askedAt
string
Heure de création de la question (ISO 8601).
question.author
object
L'auteur de la question.
question.author.name
string
Nom affiché de l'auteur de la question.
question.author.url
string
URL du profil de l'auteur de la question.
question.author.reputation
integer
Score de réputation de l'auteur de la question.
question.comments
array
Commentaires sur la question.
question.comments[].id
string
Identifiant du commentaire.
question.comments[].score
integer
Score du commentaire.
question.comments[].body
string
Texte du commentaire.
question.comments[].author
string
Nom affiché de l'auteur du commentaire.
question.comments[].authorUrl
string
URL du profil de l'auteur du commentaire.
question.comments[].createdAt
string
Heure de création du commentaire (ISO 8601).
answerCount
integer
Nombre de réponses renvoyées dans answers.
answers
array
Réponses à la question, dans l'ordre de la liste.
answers[].id
string
Identifiant de la réponse.
answers[].score
integer
Score de la réponse (upvotes moins downvotes).
answers[].isAccepted
boolean
True lorsqu'il s'agit de la réponse acceptée.
answers[].body
string
Texte du corps de la réponse.
answers[].author
object
L'auteur de la réponse.
answers[].author.name
string
Nom affiché de l'auteur de la réponse.
answers[].author.url
string
URL du profil de l'auteur de la réponse.
answers[].author.reputation
integer
Score de réputation de l'auteur de la réponse.
answers[].createdAt
string
Heure de création de la réponse (ISO 8601).
answers[].comments
array
Commentaires sur la réponse.
answers[].comments[].id
string
Identifiant du commentaire.
answers[].comments[].score
integer
Score du commentaire.
answers[].comments[].body
string
Texte du commentaire.
answers[].comments[].author
string
Nom affiché de l'auteur du commentaire.
answers[].comments[].authorUrl
string
URL du profil de l'auteur du commentaire.
answers[].comments[].createdAt
string
Heure de création du commentaire (ISO 8601).

Exemple de réponse

{
  "question": {
    "id": "2861071",
    "title": "How to modify a text file?",
    "url": "https://stackoverflow.com/questions/2861071/how-to-modify-a-text-file",
    "body": "I'm using Python and I need to insert a line at the start of a text file without loading the whole file into memory. Is there a way to do this in place, or do I have to rewrite the file?",
    "score": 312,
    "viewCount": 486201,
    "tags": ["python", "file", "text-files"],
    "askedAt": "2010-05-18T20:11:33Z",
    "author": {
      "name": "Nathan Fellman",
      "url": "https://stackoverflow.com/users/8460/nathan-fellman",
      "reputation": 127843
    },
    "comments": [
      {
        "id": "2954120",
        "score": 3,
        "body": "Do you need to preserve the original file, or is rewriting acceptable?",
        "author": "Greg Hewgill",
        "authorUrl": "https://stackoverflow.com/users/893/greg-hewgill",
        "createdAt": "2010-05-18T20:19:04Z"
      }
    ]
  },
  "answerCount": 2,
  "answers": [
    {
      "id": "2861108",
      "score": 401,
      "isAccepted": true,
      "body": "You cannot insert into the middle of a file without rewriting it. Read the file into a list of lines, insert your new line, then write it all back:\n\n    with open('file.txt') as f:\n        lines = f.readlines()\n    lines.insert(0, 'new first line\\n')\n    with open('file.txt', 'w') as f:\n        f.writelines(lines)\n",
      "author": {
        "name": "Roberto Bonvallet",
        "url": "https://stackoverflow.com/users/193568/roberto-bonvallet",
        "reputation": 30215
      },
      "createdAt": "2010-05-18T20:15:52Z",
      "comments": [
        {
          "id": "2954260",
          "score": 12,
          "body": "For very large files, stream through a temporary file instead of holding everything in memory.",
          "author": "John Machin",
          "authorUrl": "https://stackoverflow.com/users/253537/john-machin",
          "createdAt": "2010-05-18T21:02:11Z"
        }
      ]
    },
    {
      "id": "2861180",
      "score": 47,
      "isAccepted": false,
      "body": "If the file is large, use fileinput with inplace=True to edit it line by line without loading it all at once.",
      "author": {
        "name": "codeape",
        "url": "https://stackoverflow.com/users/18770/codeape",
        "reputation": 98412
      },
      "createdAt": "2010-05-18T20:24:39Z",
      "comments": []
    }
  ]
}