Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330

Парсер сайта

07.09.2020, 21:50. Показов 1473. Ответов 4

Студворк — интернет-сервис помощи студентам
Пишу я вообщем что то вроде парсера сайта на jQuery. Суть в чем: контент скрипт передает сообщением html страницу, скрипту devtools он там ее парсит и должен выводить результат. Но по очень странной и не ясной мне причине, jQuery пытается скачивать картинки. Вот код:
content.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
let messageInterval = 500;
let timer;
$(function () {
    const extensionID = chrome.runtime.id;
    sendHTMLPage(extensionID)
    $(this).on('DOMNodeInserted DOMNodeRemoved', function () {
        clearTimeout(timer);
        timer = setTimeout(function () {
            sendHTMLPage(extensionID)
        }, messageInterval)
    })
 
    chrome.runtime.onMessage.addListener(function (message) {
        if (!jQuery.isEmptyObject(message.content))
            sendHTMLPage(extensionID)
    })
 
})
 
function sendHTMLPage(extensionID) {
    chrome.runtime.sendMessage(extensionID, {pageHTML: $('body').html()});
}
devtools.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
let pageHTML;
let inputField = $('input');
let resultsDiv = $('#results')
 
$.fn.startTag = function () {
    return this[0].outerHTML.split('>')[0] + '>';
};
 
$(function () {
    const tabId = chrome.devtools.inspectedWindow.tabId.valueOf();
    chrome.tabs.sendMessage(tabId, {content: 'content'})
    chrome.runtime.onMessage.addListener(function (message, sender) {
        if (!$.isEmptyObject(message.pageHTML) && sender.tab.id === tabId) {
            pageHTML = message.pageHTML
        }
    })
    inputField.trigger('focus')
})
 
inputField.on('keyup', function () {
    resultsDiv.empty();
    $(pageHTML.toString()).find(inputField.val().toString()).each((index, element) => {
        resultsDiv.append('<div class="row-fluid">\n' +
            '<div><code></code></div>\n' +
            '<div class="text"></div>\n' +
            '</div>' +
            '<hr>');
        $('code').get(index).innerText = $(element).startTag().toString()
        $('.text').get(index).innerText = $(element).get(0).innerText.toString()
    })
})
Ошибка в консоли:
Code
1
2
3
4
5
6
7
8
9
GET chrome-extension://miagiiggbmmjgihjnnnajjkjafloiemm/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png net::ERR_FILE_NOT_FOUND
Image (async)
xe @ jquery-3.5.1.min.js:2
S.parseHTML @ jquery-3.5.1.min.js:2
S.fn.init @ jquery-3.5.1.min.js:2
S @ jquery-3.5.1.min.js:2
(anonymous) @ panelScript.js:25
dispatch @ jquery-3.5.1.min.js:2
v.handle @ jquery-3.5.1.min.js:2
На самом деле, ошибка появляется, даже если я ничего не вставляю в свою страницу( изначально я подумал, что он пытается вставить картинку тэгом и не может найти сурс), но даже такой код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
inputField.on('keyup', function () {
    resultsDiv.empty();
    $(pageHTML.toString()).find(inputField.val().toString()).each((index, element) => {
        // resultsDiv.append('<div class="row-fluid">\n' +
        //     '<div><code></code></div>\n' +
        //     '<div class="text"></div>\n' +
        //     '</div>' +
        //     '<hr>');
        // $('code').get(index).textContent = $(element).startTag().toString()
        // $('.text').get(index).textContent = $(element)
        // console.log($(element).startTag())
        // console.log($(element).innerText)
    })
})
Все равно выбивает ошибку, тоесть в консоли у меня миллион сообщений о том что ему не удалось скачать все картинки сайта. Что делать, ума не приложу
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2020, 21:50
Ответы с готовыми решениями:

Парсер информации с сайта на Js
Привет. Я полный нуб вообще в веб программировании и полез в node.js точно не поняв что это. У меня даже запустить его не получилось. ...

Парсер информации с сайта
Доброго времени суток. var request = require(&quot;request&quot;), cheerio = require(&quot;cheerio&quot;), url =...

Парсер сайта и ссылок с сайта
Добрый день. Подскажите, как реализовать парсер сайта, с которого парсятся все URL и в свою очередь, с них парсятся еще URL?(содержимое...

4
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
09.09.2020, 23:28  [ТС]
any ideas?
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
10.09.2020, 13:56
JavaScript
1
pageHTML.toString().find...
командой $( ) ты превращаешь текст обратно в элементы
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
10.09.2020, 19:05  [ТС]
Цитата Сообщение от Уф Посмотреть сообщение
командой $( ) ты превращаешь текст обратно в элементы
Ну так превратил я их, но я ведь не отображаю их нигде, зачем ему скачивать сурс? Инфа об элементах лежит ведь внутри. К тому же, если я не использую $( ), то собственно и искать по селекторам я не могу
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
11.09.2020, 11:23
Лучший ответ Сообщение было отмечено StepFather322 как решение

Решение

Method 1: Inject another file
This is the easiest/best method when you have lots of code. Include your actual JS code in a file within your extension, say script.js. Then let your content script be as follows (explained here: Google Chome “Application Shortcut” Custom Javascript):

JavaScript
1
2
3
4
5
6
7
var s = document.createElement('script');
// TODO: add "script.js" to web_accessible_resources in manifest.json
s.src = chrome.runtime.getURL('script.js');
s.onload = function() {
    this.remove();
};
(document.head || document.documentElement).appendChild(s);
Note: For security reasons, Chrome prevents loading of js files. Your file must be added as a "web_accessible_resources" item (example) :

JSON
1
2
// manifest.json must include: 
"web_accessible_resources": ["script.js"],
If not, the following error will appear in the console:

Denying load of chrome-extension://[EXTENSIONID]/script.js. Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension.

можно прям в страницу добавить скрипт и искать элементы без запроса ее кода в виде текста, прочел тут https://stackoverflow.com/ques... ent-script
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2020, 11:23
Помогаю со студенческими работами здесь

Парсер сайта на C#
Приветствую, есть задача написать парсер, как получить код станицы и в дальнейшем получить заведомые данные я знаю, проблема в том что на...

Парсер сайта
Решил попрактиковаться и написать собственный парсер. Собственно сделал половину работы, вот хочу услышать комментарии: Итак пока...

Парсер сайта
Здравствуйте. Есть парсер для БК Марафон. Он ищет определенный результат в сетах(теннис) на live ставках. Поиск происходит через...

Парсер сайта
привет помогите пожалуйста распарить сайт http://rasp.bukep.ru/ он сильно замудрен и я просто не знаю что с ним делать мне нужно...

Парсер сайта
появилась задача написать парсер одного сайта. Но есть одна загвоздка, на сайте который будет парситься инфа обновляется постоянно. Так вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru