Difference between revisions of "Pengambilan-data-fisip"
Jump to navigation
Jump to search
(Created page with "<pre> import json import requests import pandas as pd from pathlib import Path # ======================================== # 1. Folder project # ============================...") |
|||
| Line 12: | Line 12: | ||
PROJECT = Path( | PROJECT = Path( | ||
| − | "/media | + | "/media/Kuliah/BigDataFisip" |
) | ) | ||
| Line 204: | Line 204: | ||
) | ) | ||
</pre> | </pre> | ||
| + | |||
| + | |||
| + | Pada bagian <b>PROJECT = Path("/media/Kuliah/BigDataFisip")</b> sesuaikan saja dengan PATH yang kalian miliki. | ||
| + | |||
| + | Pada bagian <b>"q": '"climate change"',</b> sesuaikan saja tentang topik apa yang dicari. | ||
Revision as of 10:47, 30 September 2026
import json
import requests
import pandas as pd
from pathlib import Path
# ========================================
# 1. Folder project
# ========================================
PROJECT = Path(
"/media/Kuliah/BigDataFisip"
)
RAW_DIR = PROJECT / "data" / "raw"
RAW_DIR.mkdir(
parents=True,
exist_ok=True
)
# ========================================
# 2. API
# ========================================
url = (
"https://api.bsky.app/"
"xrpc/app.bsky.feed.searchPosts"
)
params = {
"q": '"climate change"',
"limit": 100,
"sort": "latest",
"lang": "en"
}
# ========================================
# 3. Request
# ========================================
response = requests.get(
url,
params=params,
headers={
"Accept":
"application/json",
"User-Agent":
"BigDataFisip-Class/1.0"
},
timeout=30
)
print(
"HTTP Status:",
response.status_code
)
# ========================================
# 4. Validasi response
# ========================================
if response.status_code != 200:
raise RuntimeError(
f"HTTP {response.status_code}: "
f"{response.text[:300]}"
)
data = response.json()
posts = data.get(
"posts",
[]
)
print(
"Jumlah posting:",
len(posts)
)
# ========================================
# 5. Simpan JSON asli
# ========================================
json_file = (
RAW_DIR /
"bluesky_climate_change_raw.json"
)
with open(
json_file,
"w",
encoding="utf-8"
) as f:
json.dump(
data,
f,
ensure_ascii=False,
indent=2
)
# ========================================
# 6. Ubah ke tabel
# ========================================
rows = []
for post in posts:
record = post.get(
"record",
{}
)
author = post.get(
"author",
{}
)
rows.append({
"uri":
post.get("uri"),
"created_at":
record.get("createdAt"),
"username":
author.get("handle"),
"display_name":
author.get("displayName"),
"text":
record.get("text"),
"language":
record.get("langs"),
"reply_count":
post.get(
"replyCount",
0
),
"repost_count":
post.get(
"repostCount",
0
),
"like_count":
post.get(
"likeCount",
0
)
})
df_raw = pd.DataFrame(
rows
)
# ========================================
# 7. Simpan CSV raw
# ========================================
csv_file = (
RAW_DIR /
"bluesky_climate_change_raw.csv"
)
df_raw.to_csv(
csv_file,
index=False,
encoding="utf-8-sig"
)
# ========================================
# 8. Pemeriksaan
# ========================================
print(
"Ukuran dataset:",
df_raw.shape
)
display(
df_raw.head()
)
Pada bagian PROJECT = Path("/media/Kuliah/BigDataFisip") sesuaikan saja dengan PATH yang kalian miliki.
Pada bagian "q": '"climate change"', sesuaikan saja tentang topik apa yang dicari.