Thread Stack Exchange
Analysez une page de question Stack Exchange unique en JSON structuré avec le corps de la question, chaque réponse et commentaire, le score, l'état d'acceptation, l'auteur, la réputation et les horodatages.
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' -Gfrom 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-hypothesisStructure de la réponse
Corps de la réponse JSON. Les types de champs peuvent être null lorsque la page source omet la valeur.
La question elle-même.
Identifiant de la question Stack Exchange.
Titre de la question.
URL canonique de la question.
Texte du corps de la question.
Score de la question (upvotes moins downvotes).
Nombre de vues de la question.
Tags appliqués à la question.
Heure de création de la question (ISO 8601).
L'auteur de la question.
Nom affiché de l'auteur de la question.
URL du profil de l'auteur de la question.
Score de réputation de l'auteur de la question.
Commentaires sur la question.
Identifiant du commentaire.
Score du commentaire.
Texte du commentaire.
Nom affiché de l'auteur du commentaire.
URL du profil de l'auteur du commentaire.
Heure de création du commentaire (ISO 8601).
Nombre de réponses renvoyées dans
answers.Réponses à la question, dans l'ordre de la liste.
Identifiant de la réponse.
Score de la réponse (upvotes moins downvotes).
True lorsqu'il s'agit de la réponse acceptée.
Texte du corps de la réponse.
L'auteur de la réponse.
Nom affiché de l'auteur de la réponse.
URL du profil de l'auteur de la réponse.
Score de réputation de l'auteur de la réponse.
Heure de création de la réponse (ISO 8601).
Commentaires sur la réponse.
Identifiant du commentaire.
Score du commentaire.
Texte du commentaire.
Nom affiché de l'auteur du commentaire.
URL du profil de l'auteur du commentaire.
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": []
}
]
}