Добрый вечер. Сегодня мне предоставилось страдать с заполнением 7-ми таблиц по 176 ссылок в каждой и заполнением необходимых данных. Поэтому я написал скрипт на парсинг ВК и делюсь им с Вами
Данный скрипт на node.js первый от меня на форуме, но в ближайшее время буду выкладывать и другие (в т.ч. старые, которые по-хорошему бы переписать)
Пример парсинга ВК (тк через fetch и axios не работает)
По факту можно парсить не только вк, сам модуль******** (очень классный)
Описание скрипта:
P.S.S у меня при открытии таблицы кодировка стоит неправильная (вместо русских символов ***** какая-то), это только после этого скрипта
Чтобы сделать нормальную кодировку, заходим в Данные -> Из текста -> Выбираем наш файлик -> Ставим галочку на С разделителем -> Далее -> Выбираем точка с запятой (в скрипте можно изменить в параметре delimiter) -> Готово -> Ставим галочку Новый лист -> Ок. Поздравляю, мы получили фулл автоматизированное заполнение таблицы
Описание переменных с парсинга:
(закомментированая) title - заголовок страницы
author - автор поста
views - просмотры поста
text - текст поста
title - первый абзац текста (заголовок) (изменено)
В комментариях также можете предлагать идеи скриптов
Также можете заказать у меня скрипты, которые я сделаю в кратчайшее время за доступную цену
Данный скрипт на node.js первый от меня на форуме, но в ближайшее время буду выкладывать и другие (в т.ч. старые, которые по-хорошему бы переписать)
Пример парсинга ВК (тк через fetch и axios не работает)
По факту можно парсить не только вк, сам модуль
Описание скрипта:
- Создает ВИДИМЫЙ браузер
- Переходит по ссылкам из массива
- Делает скрин каждой страницы и сохраняет в папку data
- В конце вносит в csv (таблица, эксель) файлик первый абзац (заголовок) поста, название группы, которая выложила пост, ссылку на пост и просмотры (скрин надо вставлять отдельно, но мб можно сделать и через код, я не пробовал)
- Парсит все что угодно
- Видно браузер (не во всех модуллях есть)
- ***** настроек различных
- Можно выбрать браузер, через который будут открываться ссылки
- После 72-73 постов скрипт либо крашится, либо просто останавливается, из-за чего возникает хз, железо стоит нормальное
P.S.S у меня при открытии таблицы кодировка стоит неправильная (вместо русских символов ***** какая-то), это только после этого скрипта
Чтобы сделать нормальную кодировку, заходим в Данные -> Из текста -> Выбираем наш файлик -> Ставим галочку на С разделителем -> Далее -> Выбираем точка с запятой (в скрипте можно изменить в параметре delimiter) -> Готово -> Ставим галочку Новый лист -> Ок. Поздравляю, мы получили фулл автоматизированное заполнение таблицы
Описание переменных с парсинга:
(закомментированая) title - заголовок страницы
author - автор поста
views - просмотры поста
text - текст поста
title - первый абзац текста (заголовок) (изменено)
JavaScript:
const fs = require('fs')
const {Builder, Browser, By} = require('selenium-webdriver');
const {stringify} = require('csv-stringify')
const urls = ["http://vk.com/wall-188348290_5510", "http://vk.com/wall-194912760_3552", "http://vk.com/wall-216841951_948"]
async function selenium() {
(async function example() {
let driver = await new Builder().forBrowser(Browser.FIREFOX).build();
let url = ''
const columns = {
id: '№ п/п',
name: 'Заголовок',
author: 'Наименование паблика в социальной сети ВКонтакте',
url: 'Ссылка на опубликованный материал',
screenshot: 'Скриншот опубликованного материала',
views: 'Охват аудитории'
}
let data = []
console.log(urls.length)
try {
for (let i = 0; i < urls.length; i++) {
url = urls[i]
await driver.get(url);
// let title = await driver.getTitle();
let author = await driver.findElement(By.className('PostHeaderTitle__authorName')).getText()
let views = await driver.findElement(By.className('_views')).getText()
let text = await driver.findElement(By.className('wall_post_text')).getText()
let title = text.split('\n')[0]
console.log(i+1, author, views, title)
const screenshot = await driver.takeScreenshot().then(function(data){
var base64Data = data.replace(/^data:image\/png;base64,/,"")
fs.writeFile('./data/' + i + '.png', base64Data, 'base64', function(err) {
if(err) console.log(err);
});
});
data.push([i+1, title, author, url, '.', views])
}
stringify(data, {header: true, columns: columns, delimiter: ';'}, (err, output) => {
if (err) throw err;
fs.writeFile('./data/1.csv', output, 'utf-8', (err) => {
if (err) throw err;
console.log('saved')
})
})
} finally {
await driver.quit();
}
})();
}
selenium()
В комментариях также можете предлагать идеи скриптов
Также можете заказать у меня скрипты, которые я сделаю в кратчайшее время за доступную цену