Update server.js
Browse files
server.js
CHANGED
@@ -1,14 +1,12 @@
|
|
1 |
const express = require("express");
|
|
|
2 |
const { chromium } = require("playwright-core");
|
3 |
const cheerio = require("cheerio");
|
4 |
-
const prettify = require("express-prettify");
|
5 |
-
const prettyjson = require("prettyjson");
|
6 |
|
7 |
const app = express();
|
8 |
const PORT = 7860;
|
9 |
|
10 |
-
//
|
11 |
-
app.use(prettify({ query: "pretty" }));
|
12 |
|
13 |
async function scrapeMatches() {
|
14 |
const browser = await chromium.launch({
|
@@ -21,15 +19,15 @@ async function scrapeMatches() {
|
|
21 |
|
22 |
// Set headers to bypass bot detection
|
23 |
await page.setExtraHTTPHeaders({
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
});
|
28 |
|
29 |
// Block unnecessary requests (images, CSS, etc.)
|
30 |
-
await page.route(
|
31 |
-
return [
|
32 |
-
? route.abort()
|
33 |
: route.continue();
|
34 |
});
|
35 |
|
@@ -48,9 +46,7 @@ async function scrapeMatches() {
|
|
48 |
|
49 |
for (let link of leagueLinks) {
|
50 |
await page.goto(link, { waitUntil: "domcontentloaded", timeout: 60000 });
|
51 |
-
|
52 |
-
// Use evaluate to get full HTML for parsing
|
53 |
-
const html = await page.evaluate(() => document.documentElement.outerHTML);
|
54 |
const $ = cheerio.load(html);
|
55 |
|
56 |
$(".wttr").each((_, element) => {
|
@@ -80,21 +76,13 @@ async function scrapeMatches() {
|
|
80 |
app.get("/draw", async (req, res) => {
|
81 |
try {
|
82 |
const matches = await scrapeMatches();
|
83 |
-
|
84 |
-
// Beautify response (Console Output)
|
85 |
-
console.log("\nFetched Matches:");
|
86 |
-
console.log(prettyjson.render(matches));
|
87 |
-
|
88 |
-
res.json({
|
89 |
-
success: true,
|
90 |
-
data: matches
|
91 |
-
});
|
92 |
} catch (error) {
|
93 |
-
console.error("Error
|
94 |
res.status(500).json({ success: false, message: "Failed to fetch data" });
|
95 |
}
|
96 |
});
|
97 |
|
98 |
app.listen(PORT, () => {
|
99 |
-
console.log(
|
100 |
});
|
|
|
1 |
const express = require("express");
|
2 |
+
const pretty = require("express-pretty"); // Import express-pretty
|
3 |
const { chromium } = require("playwright-core");
|
4 |
const cheerio = require("cheerio");
|
|
|
|
|
5 |
|
6 |
const app = express();
|
7 |
const PORT = 7860;
|
8 |
|
9 |
+
app.use(pretty()); // Enable express-pretty
|
|
|
10 |
|
11 |
async function scrapeMatches() {
|
12 |
const browser = await chromium.launch({
|
|
|
19 |
|
20 |
// Set headers to bypass bot detection
|
21 |
await page.setExtraHTTPHeaders({
|
22 |
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
23 |
+
'Accept-Language': 'en-US,en;q=0.9',
|
24 |
+
'Referer': 'https://www.google.com/'
|
25 |
});
|
26 |
|
27 |
// Block unnecessary requests (images, CSS, etc.)
|
28 |
+
await page.route('**/*', (route) => {
|
29 |
+
return ['image', 'stylesheet', 'font', 'media'].includes(route.request().resourceType())
|
30 |
+
? route.abort()
|
31 |
: route.continue();
|
32 |
});
|
33 |
|
|
|
46 |
|
47 |
for (let link of leagueLinks) {
|
48 |
await page.goto(link, { waitUntil: "domcontentloaded", timeout: 60000 });
|
49 |
+
const html = await page.content();
|
|
|
|
|
50 |
const $ = cheerio.load(html);
|
51 |
|
52 |
$(".wttr").each((_, element) => {
|
|
|
76 |
app.get("/draw", async (req, res) => {
|
77 |
try {
|
78 |
const matches = await scrapeMatches();
|
79 |
+
res.json({ success: true, data: matches });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
} catch (error) {
|
81 |
+
console.error("Error:", error);
|
82 |
res.status(500).json({ success: false, message: "Failed to fetch data" });
|
83 |
}
|
84 |
});
|
85 |
|
86 |
app.listen(PORT, () => {
|
87 |
+
console.log(`Server running at http://localhost:${PORT}/draw`);
|
88 |
});
|