Stack Exchange Thread
Parsen Sie eine einzelne Stack Exchange Fragenseite in strukturiertes JSON mit dem Fragetext, jeder Antwort und jedem Kommentar, Score, Akzeptanzstatus, Autor, Reputation und Zeitstempeln.
API-Nutzung
Fügen Sie &scraper=stackexchange-thread zu einem Crawling API-Request hinzu. URL-kodieren Sie die Ziel-URL im url-Parameter.
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)Beispiel-Eingabe-URL
Im url-Parameter funktioniert jede Stack Exchange-Frage-URL, von jeder Site im Netzwerk. Zum Beispiel:
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-hypothesisResponse-Struktur
JSON-Response-Body. Feldtypen können null sein, wenn die Quellseite den Wert nicht enthält.
Die Frage selbst.
Stack Exchange Fragen-ID.
Fragetitel.
Kanonische URL der Frage.
Text des Fragetexts.
Fragen-Score (Upvotes minus Downvotes).
Anzahl der Aufrufe der Frage.
Auf die Frage angewandte Tags.
Erstellungszeit der Frage (ISO 8601).
Autor der Frage.
Anzeigename des Fragenautors.
Profil-URL des Fragenautors.
Reputations-Score des Fragenautors.
Kommentare zur Frage.
Kommentar-ID.
Kommentar-Score.
Kommentartext.
Anzeigename des Kommentarautors.
Profil-URL des Kommentarautors.
Erstellungszeit des Kommentars (ISO 8601).
Anzahl der in
answers zurückgegebenen Antworten.Antworten auf die Frage, in Listenreihenfolge.
Antwort-ID.
Antwort-Score (Upvotes minus Downvotes).
True, wenn dies die akzeptierte Antwort ist.
Text des Antworttexts.
Autor der Antwort.
Anzeigename des Antwortautors.
Profil-URL des Antwortautors.
Reputations-Score des Antwortautors.
Erstellungszeit der Antwort (ISO 8601).
Kommentare zur Antwort.
Kommentar-ID.
Kommentar-Score.
Kommentartext.
Anzeigename des Kommentarautors.
Profil-URL des Kommentarautors.
Erstellungszeit des Kommentars (ISO 8601).
Beispiel-Response
{
"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": []
}
]
}