Когда я загружаю страницу «http://proxydb.net» с помощью cURL или пытаюсь очистить страницу, тело ответа пусто. Судя по всему, страница загружается динамически с помощью JavaScript.
Какие были бы варианты, чтобы по-прежнему загружать визуализированный исходный код?
Я попытался использовать Selenium с помощью драйвера Firefox, но это увеличило загрузку моего процессора до 100 процентов всего за 15 секунд. Я предполагаю, что это не жизнеспособный вариант, особенно для более крупных проектов, которые включают очистку более 100 000 страниц с помощью Selenium.
Кроме того, чтобы понять концепцию динамически загружаемых страниц. Как это работает? Какой код необходим для их работы?
Можете ли вы попробовать использовать github.com/MechanicalSoup/MechanicalSoup, я лично не пробовал, но это может помочь. Если это не сработает, возможно, вам придется пойти по пути селена.
Спасибо. Я попробую. Есть ли способ оставить веб-браузер открытым при использовании Selenium? В моем случае браузер открывается, а затем закрывается для каждого запроса, что сильно потребляет мои системные ресурсы.






When I load the page "http://proxydb.net" using cURL, or try to scrape the page, then the response body is empty - потому что этот конкретный веб-сайт использует белый список пользовательского агента, и если ваш пользовательский агент не находится в белом списке, вы просто получаете пустую страницу. предположительно, все основные веб-браузеры внесены в белый список (Chrome, Internet Explorer, Edge, Safari, Opera и т. д.), но вот конкретный пользовательский агент, внесенный в белый список:
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
(пользовательский агент Chrome 65, работающий в Windows 7 x64), и, таким образом, это работает:
curl 'http://proxydb.net/' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
Что касается динамической загрузки контента, это обычно делается с помощью XMLHttpRequests или в более старом коде, iframe.
Apparently, the page is dynamically loaded using JavaScript. - неправильно, эти ребята не загружают список прокси динамически, они встроены прямо в главную страницу (пока вы используете агент пользователя из белого списка), скрытые как
var q = '42.86.831'.split('').reverse().join('');
var yy = /* */ atob('\x4d\x43\x34\x79\x4d\x54\x67\x3d'.replace(/\\x([0-9A-Fa-f]{2})/g, function() {
return String.fromCharCode(parseInt(arguments[1], 16))
}));
var pp = (3109 - ([] + [])) /**/ + (+document.querySelector('[data-numr]').getAttribute('data-numr')) - [] + [];
document.write('<a href = "/' + q + yy + '/' + pp + '#http">' + q + yy + String.fromCharCode(58) + pp + '</a>');
(который вместе с div data-numr в этом случае переводится в 138.68.240.218:3128 - и он фактически зашифрован, а ключ дешифрования находится в div, похожем на <div style = "display:none" data-numr = "19"></div>, здесь ключ был 19).
Попробуйте использовать python с scrapy-splash для динамической загрузки страниц