格式化工具
This commit is contained in:
parent
57e16fa7d9
commit
5042f80954
13
.prettierrc
Normal file
13
.prettierrc
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"printWidth": 100,
|
||||
"tabWidth": 4,
|
||||
"semi": true,
|
||||
"singleQuote": false,
|
||||
"quoteProps": "consistent",
|
||||
"trailingComma": "es5",
|
||||
"bracketSpacing": true,
|
||||
"arrowParens": "avoid",
|
||||
"proseWrap": "never",
|
||||
"endOfLine": "lf",
|
||||
"embeddedLanguageFormatting": "off"
|
||||
}
|
||||
@ -1,19 +1,26 @@
|
||||
import { launch } from 'puppeteer';
|
||||
import 'dotenv/config.js'
|
||||
import { injectionCookie } from '../utils/userUtils.js';
|
||||
import fs from 'fs';
|
||||
import { launch } from "puppeteer";
|
||||
import "dotenv/config.js";
|
||||
import { injectionCookie } from "../utils/userUtils.js";
|
||||
import fs from "fs";
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
(async () => {
|
||||
const browser = await launch({ headless: false, args: [`--window-size=1920,1080`], defaultViewport: { width: 1920, height: 1080 } });
|
||||
const browser = await launch({
|
||||
headless: false,
|
||||
args: [`--window-size=1920,1080`],
|
||||
defaultViewport: { width: 1920, height: 1080 },
|
||||
});
|
||||
const page = await browser.newPage();
|
||||
page.on("console", msg => console.log("PAGE LOG", msg.text()));
|
||||
page.on("error", error => console.error("PAGE error", error));
|
||||
|
||||
// 注入cookie
|
||||
const webUrl = 'https://www.zhihu.com/hot';
|
||||
const cookieFileUrl = './data/zhihu.json';
|
||||
const webUrl = "https://www.zhihu.com/hot";
|
||||
const cookieFileUrl = "./data/zhihu.json";
|
||||
await injectionCookie(page, webUrl, cookieFileUrl);
|
||||
|
||||
const hotItems = await page.$$('.HotList-list .HotItem');
|
||||
console.log("========");
|
||||
const hotItems = await page.$$(".HotList-list .HotItem");
|
||||
|
||||
const hotText = new Array();
|
||||
|
||||
@ -21,18 +28,39 @@ import fs from 'fs';
|
||||
if (Object.hasOwnProperty.call(hotItems, hot)) {
|
||||
const element = hotItems[hot];
|
||||
|
||||
const h2Element = await element.$('h2');
|
||||
const pElement = await element.$('p');
|
||||
const h2Element = await element.$("h2");
|
||||
const pElement = await element.$("p");
|
||||
|
||||
const title = h2Element != null ? await h2Element.evaluate(e => e.textContent) : '';
|
||||
const excerpt = pElement != null ? await pElement.evaluate(e => e.textContent) : '';
|
||||
|
||||
hotText.push({ title, excerpt });
|
||||
const title = h2Element != null ? await h2Element.evaluate(e => e.textContent) : "";
|
||||
const excerpt = pElement != null ? await pElement.evaluate(e => e.textContent) : "";
|
||||
const createTime = Date.now();
|
||||
hotText.push({ title, excerpt, createTime });
|
||||
}
|
||||
}
|
||||
console.log("end...");
|
||||
|
||||
fs.writeFileSync('./data/zhihuData.json', JSON.stringify(hotText, null, 2));
|
||||
fs.writeFileSync("./data/zhihuData.json", JSON.stringify(hotText, null, 2));
|
||||
|
||||
const url = process.env.URL;
|
||||
console.log(process.env.URL);
|
||||
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(hotText, null, 2),
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`Http error! status : ${response.status}`);
|
||||
}
|
||||
|
||||
const responseData = await response.json();
|
||||
console.log("Repsonse data", responseData);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
})();
|
||||
})();
|
||||
|
||||
@ -4,4 +4,4 @@
|
||||
"dotenv": "^16.4.5",
|
||||
"puppeteer": "^22.13.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,38 +1,38 @@
|
||||
import fs from 'fs';
|
||||
import fs from "fs";
|
||||
|
||||
/**
|
||||
* 设置页面的LocalStorage
|
||||
* @param {*} page
|
||||
* @param {*} page
|
||||
* @param {String} file 用户信息
|
||||
*/
|
||||
export async function setLocalStorage(page, file) {
|
||||
const outputLocalStorge = fs.readFileSync(file, 'utf-8');
|
||||
const outputLocalStorge = fs.readFileSync(file, "utf-8");
|
||||
let localStorageTest = JSON.parse(outputLocalStorge);
|
||||
|
||||
// 设置页面的localStorage
|
||||
await page.evaluateOnNewDocument(localStorageTest => {
|
||||
localStorage.clear();
|
||||
localStorage.setItem('merchant_access_token', localStorageTest.merchant_access_token);
|
||||
localStorage.setItem('merchant_refresh_token', localStorageTest.merchant_refresh_token);
|
||||
localStorage.setItem('merchant_login_data', localStorageTest.merchant_login_data);
|
||||
localStorage.setItem('merchant_metadata_data', localStorageTest.merchant_metadata_data);
|
||||
localStorage.setItem("merchant_access_token", localStorageTest.merchant_access_token);
|
||||
localStorage.setItem("merchant_refresh_token", localStorageTest.merchant_refresh_token);
|
||||
localStorage.setItem("merchant_login_data", localStorageTest.merchant_login_data);
|
||||
localStorage.setItem("merchant_metadata_data", localStorageTest.merchant_metadata_data);
|
||||
}, localStorageTest);
|
||||
|
||||
console.log('set success');
|
||||
console.log("set success");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Page} page
|
||||
* @param {Page} page
|
||||
* @param {String} webUrl 网站
|
||||
* @param {String} cookieFile cookie地址Url
|
||||
*/
|
||||
export async function injectionCookie(page, webUrl, cookieFile) {
|
||||
try {
|
||||
await page.goto(webUrl);
|
||||
const cookies = JSON.parse(fs.readFileSync(cookieFile, 'utf-8'));
|
||||
const cookies = JSON.parse(fs.readFileSync(cookieFile, "utf-8"));
|
||||
await page.setCookie(...cookies);
|
||||
await page.goto(webUrl);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user