Я пытаюсь сгенерировать массив Javascript объектов (который впоследствии будет сохранен как файл JSON) из html этой веб-страницы: https://remoteok.io/remote-dev+javascript-jobs
Я хочу извлечь описания вакансий для первого раздела (перечислены в разделе «Сегодня») - скрытые под раскрывающимся списком, пока вы не нажмете на список вакансий. См. Снимок экрана:
![Job description / job listing explainer](https://i.stack.imgur.com/3kd2K.png)
Макет был построен с использованием таблиц: список заданий и описание задания html Контейнеры представляют собой строки таблицы одного уровня <tr>
.
На сайте первое «объявление» с текстом «первая медицинская страховка для удаленных стартапов» - это рекламный контент, поэтому при нажатии на него ниже не будет скрытого текста описания работы.
Итак, в моем коде я начинаю с позиции индекса 2, а затем повторяюсь по кратным двум в for для l oop. Эта часть работает. Но затем мне нужно добавить это описание задания к каждому объекту в массиве (называемом scrapedArray
), уже созданному из других данных:
const first_table_row = $(first_section).find('tr');
for(var i = 2; i < first_table_row.length; i+= 2) {
let job_description = $(first_table_row[i]).find('.markdown').html().trim();
// console.log(job_description);
scrapedArray.forEach((obj) => {
obj["job_description"] = job_description;
});
}
Ведение журнала консоли job_description
без forEach получает каждое отдельное описание задания как предполагалось, но когда я включаю forEach, он просто повторяет тот же html для того же списка заданий Scalable Path, см. здесь (вывод job_description
, усеченный как html, довольно длинный):
(2) [{…}, {…}]
0:
company_logo: "https://remoteok.io/assets/jobs/07a835281c655f47e04cd5799f27d219.png?1584688805"
job_description: "\nScalable Path is looking for a Senior Full Stack.."
__proto__: Object
1:
company_logo: "https://remoteok.io/assets/jobs/9e96332ed226d8ffd20da84b6951b66e.png?1584649206"
job_description: "\nScalable Path is looking for a Senior Full Stack.."
Что я делаю неправильно? Есть ли лучший способ сделать это?