Research project application (Prof. Yayati): scrape a small sample of public 7 Cups forum data, model a conversation as a graph, and explore it with graph / NLP methods. This was done to percieve our skillsets and analyse our approaches to problem solving
- Arnav Kothari — SE25UCSE014 — usuallyarnav
- Advik Prasad — SE25UARI118 — LeafyChan
- Anvitha Reddy — SE25UDSC041 — anvi-ar
- TVNS SaiCharan — SE25UCSE071 — thesungod07
- Platform recon — posts are server-rendered in raw HTML
- Scraper built and validated (
webscraper.py) - Sample scraped — 1 penpals thread, 111 posts, reply depth 23
- Interactive reply-tree viewer (
viz/) - Multi-thread scrape (for a richer user network)
- Report (
docs/) - NLP / emotion pass (optional strengthener)
webscraper.py fetch (saved file / requests / Selenium) + parse -> posts.json
requirements.txt Python dependencies
viz/ interactive reply-tree viewer (commit ANONYMIZED builds only)
docs/ report and notes
data/ scraped data (raw pages + real-name data are gitignored)
pip3 install -r requirements.txt
# Selenium mode also needs Google Chrome installed.Parse a page you've already saved:
python3 webscraper.py thread.htmlFetch live with a real browser (clears the Cloudflare check), then parse:
python3 webscraper.py --selenium "https://www.7cups.com/forum/<community>/<Sub_ID>/<Thread_ID>/"Output is posts.json — graph-ready: each node is a post, edges come from
parent_post_id (built from the ?post= link in each reply footer).
For multi-page threads, set MAX_PAGES near the top of webscraper.py.
This project analyses publicly visible posts from a mental-health support platform. That makes the data sensitive regardless of its public visibility, so:
- No scraped content is committed to this repository — raw pages and
parsed
posts.jsonare gitignored. This repo contains code only. - Analysis is limited to graph topology and aggregate structure. The data is not used to profile or re-identify individuals.
- Anyone reproducing this should run the scraper against their own fetch and keep the output local.
git pullbefore you start; commit small, push often.- Track tasks with Issues and the Projects board.
- Keep the live report draft wherever co-editing is easiest, then export the
final into
docs/.