Javascript Screenscraper - PullRequest
       24

Javascript Screenscraper

0 голосов
/ 12 мая 2018

Я пытаюсь сделать простой скребок для экрана на этом сайте - Список библиотек Javascript он должен быть запущен через консоль и возвращать все библиотеки в виде текста без категорий. Мне удалось получить их все с кодом ниже. Они также упомянули, что мы можем использовать функцию map () для отображения содержимого, однако я не смог этого сделать. Мой вопрос заключается в том, как перебрать все категории и объединить различные массивы в один массив имен библиотек. Любая помощь приветствуется!

root = document.documentElement
const firstTitle = root.getElementsByClassName("mw-headline")[0]
const firstGroup = firstTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const secondTitle = root.getElementsByClassName("mw-headline")[1]
const secondGroup = secondTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const thirdTitle = root.getElementsByClassName("mw-headline")[2]
const thirdGroup = thirdTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const fourthTitle = root.getElementsByClassName("mw-headline")[3]
const fourthGroup = fourthTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const fifthTitle = root.getElementsByClassName("mw-headline")[4]
const fifthGroup = fifthTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const sixthTitle = root.getElementsByClassName("mw-headline")[5]
const sixthGroup = sixthTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const seventhTitle = root.getElementsByClassName("mw-headline")[6]
const seventhGroup = seventhTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const eightTitle = root.getElementsByClassName("mw-headline")[7]
const eightGroup = eightTitle.nextElementSibling.parentElement.nextElementSibling.textContent
const ninthTitle = root.getElementsByClassName("mw-headline")[8]
const ninthGroup = secondTitle.nextElementSibling.parentElement.nextElementSibling.textContent

Array(firstGroup, secondGroup, thirdGroup, fourthGroup, fifthGroup, sixthGroup, seventhGroup, eightGroup, ninthGroup)

РЕЗУЛЬТАТ

(9) ["↵Cassowary (software)↵CHR.js↵", "↵Google Polymer↵Dojo Toolkit↵jQuery↵midori↵MooTools↵Prototype JavaScript Framework↵", "↵See also: List of JavaScript graphics libraries↵A…echart↵Three.js↵Velocity.js↵Verge3D↵WhitestormJS↵", "↵AngularJS (framework)↵Angular (application platfo…K↵Glow↵Lively Kernel↵Script.aculo.us↵YUI Library↵", "Ample SDK↵Glow↵Lively Kernel↵Script.aculo.us↵YUI Library↵", "↵Google Closure Library↵Joose↵JsPHP↵Microsoft's Aj…F.js↵Rico↵Socket.IO↵Spry framework↵Underscore.js↵", "↵Cascade Framework↵jQuery Mobile↵Mustache↵Jinja-JS↵Twig.js↵", "↵Jasmine↵Mocha↵QUnit↵Tape↵Unit.js↵", "↵Google Polymer↵Dojo Toolkit↵jQuery↵midori↵MooTools↵Prototype JavaScript Framework↵"]
0
:
"↵Cassowary (software)↵CHR.js↵"
1
:
"↵Google Polymer↵Dojo Toolkit↵jQuery↵midori↵MooTools↵Prototype JavaScript Framework↵"
2
:
"↵See also: List of JavaScript graphics libraries↵AnyChart↵D3.js↵FusionCharts↵Highcharts↵EaselJS, part of CreateJS↵JavaScript InfoVis Toolkit↵p5.js↵Pixi.js↵Plotly↵Processing.js↵Raphaël↵SWFObject↵Teechart↵Three.js↵Velocity.js↵Verge3D↵WhitestormJS↵"
3
:
"↵AngularJS (framework)↵Angular (application platform)↵Bootstrap↵DevExtreme of DevExpress↵DHTMLX↵Dojo Widgets↵Ext JS of Sencha↵ZURB Foundation↵Google's Polymer paper elements↵jQuery UI↵jQWidgets↵Ignite UI of Infragistics↵Kendo UI of Telerik↵Wijmo 5 of GrapeCity↵OpenUI5 of SAP↵qooxdoo↵SmartClient↵React.js↵Webix↵WinJS↵No longer actively developedEdit↵Ample SDK↵Glow↵Lively Kernel↵Script.aculo.us↵YUI Library↵"
4
:
"Ample SDK↵Glow↵Lively Kernel↵Script.aculo.us↵YUI Library↵"
5
:
"↵Google Closure Library↵Joose↵JsPHP↵Microsoft's Ajax library↵MochiKit↵PDF.js↵Rico↵Socket.IO↵Spry framework↵Underscore.js↵"
6
:
"↵Cascade Framework↵jQuery Mobile↵Mustache↵Jinja-JS↵Twig.js↵"
7
:
"↵Jasmine↵Mocha↵QUnit↵Tape↵Unit.js↵"
8
:
"↵Google Polymer↵Dojo Toolkit↵jQuery↵midori↵MooTools↵Prototype JavaScript Framework↵"
length
:
9

1 Ответ

0 голосов
/ 12 мая 2018

Вы должны были использовать querySelector, чтобы найти все узлы имен категорий: Вот проверенный рабочий пример:

const libNames = [... document.documentElement.querySelectorAll('.mw-headline')].map((lib) => lib.nextElementSibling.parentElement.nextElementSibling.textContent)

если вы хотите одну строку, вы можете присоединиться к libNames:

const libNames = [... document.documentElement.querySelectorAll('.mw-headline')].map((lib) => lib.nextElementSibling.parentElement.nextElementSibling.textContent).join(' ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...