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