Skip to content

Commit 3d858fc

Browse files
committed
created gfg scrapper
0 parents  commit 3d858fc

File tree

5 files changed

+575
-0
lines changed

5 files changed

+575
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

facts/practice.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const fs = require('fs');
2+
const puppeteer = require('puppeteer');
3+
let questions = {}
4+
5+
6+
async function pattern532(dsaTopic) {
7+
const browser = await puppeteer.launch({
8+
headless: false,
9+
defaultViewport: null,
10+
args: ["--start-maximized"],
11+
slowMo: 75
12+
});
13+
const page = await browser.newPage();
14+
await page.goto('https://practice.geeksforgeeks.org/explore/?page=1');
15+
16+
await page.waitForSelector("div[href='#collapse4'] h4")
17+
18+
await page.click("div[href='#collapse4'] h4", { delay: 2000 })
19+
20+
await page.click("#moreCategories", { delay: 2000 })
21+
22+
await page.waitForSelector("#searchCategories");
23+
24+
await page.type("#searchCategories", dsaTopic)
25+
26+
await page.click('[style="font-size: 12px; padding: 10px; display: block;"]', { delay: 2000 })
27+
}
28+
29+
pattern532("Recursion");

gfgScrapper.js

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
const fs = require('fs');
2+
const puppeteer = require('puppeteer');
3+
let questions = {}
4+
5+
6+
async function pattern532(dsaTopic) {
7+
const browser = await puppeteer.launch({
8+
headless: false,
9+
defaultViewport: null,
10+
args: ["--start-maximized"],
11+
slowMo: 75
12+
});
13+
const page = await browser.newPage();
14+
await page.goto('https://practice.geeksforgeeks.org/explore/?page=1');
15+
await page.waitForSelector("div[href='#collapse4'] h4")
16+
// await page.click(".clearFilters")
17+
18+
await page.evaluate(function () {
19+
document.querySelector("div[href='#collapse4'] h4").click();
20+
document.querySelector("#moreCategories").click();
21+
})
22+
23+
// await page.click("#moreCategories");
24+
await page.waitForSelector("#searchCategories");
25+
await page.type("#searchCategories", dsaTopic)
26+
27+
await page.click('[style="font-size: 12px; padding: 10px; display: block;"]',{delay:2000})
28+
await page.click("#selectCategoryModal",{delay:500})
29+
30+
// await page.click(".modal-body button.close", { delay: 2000 })
31+
// await page.click("label[style='display: block;']", { delay: 1000 })
32+
// await page.click("label[style='display: block;']")
33+
// await page.click("label[style='display: block;']")
34+
35+
36+
await page.click("div[href='#collapse1'] h4", { delay: 2000 });
37+
await Promise.all([
38+
page.waitForNavigation(),
39+
page.click("[value='0']", { delay: 2000 })
40+
])
41+
42+
43+
44+
let easyQ = await page.evaluate(function () {
45+
let easyQ = {};
46+
let problemName = document.querySelectorAll(".panel.problem-block div>span");
47+
let problemLink = document.querySelectorAll(".panel.problem-block a");
48+
49+
for (let i = 0; i < 5; i++) {
50+
51+
easyQ[problemName[i].innerText] = problemLink[i].getAttribute("href");
52+
}
53+
54+
return easyQ;
55+
})
56+
57+
questions["Easy Questions: "] = easyQ;
58+
59+
await page.click("[value='0']", { delay: 2000 })
60+
61+
await Promise.all([
62+
page.waitForNavigation(),
63+
page.click("[value='1']", { delay: 2000 })
64+
])
65+
66+
await page.waitForSelector(".panel.problem-block div>span")
67+
68+
let mediumQ = await page.evaluate(function () {
69+
let mediumQ = {};
70+
let problemName = document.querySelectorAll(".panel.problem-block div>span");
71+
let problemLink = document.querySelectorAll(".panel.problem-block a");
72+
73+
for (let i = 0; i < 3; i++) {
74+
75+
mediumQ[problemName[i].innerText] = problemLink[i].getAttribute("href");
76+
}
77+
78+
return mediumQ;
79+
})
80+
81+
questions["Medium Questions: "] = mediumQ
82+
83+
await page.click("[value='1']", { delay: 2000 })
84+
await Promise.all([
85+
page.waitForNavigation(),
86+
page.click("[value='2']", { delay: 2000 })
87+
])
88+
89+
await page.waitForSelector(".panel.problem-block div>span")
90+
91+
let hardQ = await page.evaluate(function () {
92+
let hardQ = {};
93+
let problemName = document.querySelectorAll(".panel.problem-block div>span");
94+
let problemLink = document.querySelectorAll(".panel.problem-block a");
95+
96+
for (let i = 0; i < 2; i++) {
97+
98+
hardQ[problemName[i].innerText] = problemLink[i].getAttribute("href");
99+
}
100+
101+
return hardQ;
102+
})
103+
104+
questions["Hard Questions: "] = hardQ;
105+
106+
let fileName= dsaTopic+" Questions.json";
107+
108+
fs.writeFile(fileName, JSON.stringify(questions), function (err) {
109+
if (err)
110+
{
111+
console.log(err);
112+
}
113+
browser.close();
114+
})
115+
116+
}
117+
118+
pattern532("Graph");

0 commit comments

Comments
 (0)