Скупка извлечения неполного HTML - PullRequest
0 голосов
/ 24 января 2019

Я бывший программист, но новичок в области медицины. На самом деле, это мой первый проект на Python, поэтому я могу делать что-то не так.

Я поднял скрап под Анакондой и запустил оболочку с:

 scrapy shell "https://sailing-channels.com/by-subscribers"

Похоже, все работает нормально, и я могу заставить некоторые запросы работать.

Вот моя проблема: когда я вхожу:

response.css('body').extract()

Я получаю: ['<body><noscript>If you\'re seeing this message, that means <strong>JavaScript has been disabled on your browser</strong>, please <strong>enable JS</strong> to make this app work.</noscript><div id="app"></div><script src="//apis.google.com/js/platform.js" async></script><script>!function(e,a,n,t,g,c,i){e.GoogleAnalyticsObject="ga",e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(n),i=a.getElementsByTagName(n)[0],c.async=1,c.src="//www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script"),ga("create","UA-15981085-17","auto"),ga("require","linkid"),ga("set","anonymizeIp",!0),ga("send","pageview")</script><script type="application/ld+json">{\n\t\t\t"@context": "http://schema.org",\n\t\t\t"@type": "Organization",\n\t\t\t"name": "Sailing Channels"\n\t\t\t"url": "https://www.sailing-channels.com",\n\t\t\t"logo": "https://sailing-channels.com/img/banner.png",\n\t\t\t"sameAs" : [\n\t\t\t\t"https://www.facebook.com/sailingchannels",\n\t\t\t\t"https://twitter.com/sailchannels"\n\t\t\t]\n\t }</script><script type="text/javascript" src="https://cdn.sailing-channels.com/1.15.9/main.1dad65fcb7a507930e1f.js"></script></body>']

Моя проблема в том, что я ожидаю намного большего. Когда я проверяю хром, я вижу гораздо больше разделов / div внутри <div id="app"></div>

Может ли кто-нибудь пролить свет на то, что я делаю неправильно? Я хочу очистить название канала, количество подписчиков и количество просмотров

Спасибо

1 Ответ

0 голосов
/ 24 января 2019

Понятный.Это из-за того, что они рендерили данные через другой скрипт во время загрузки страницы.

В обычных настройках scrapy содержимое динамической загрузки страницы не отображается.Для очистки этих данных вы можете использовать selenium.
селен-с-терапией для динамической страницы

В качестве альтернативы вы можете использовать splash для обработки содержимого с поддержкой JavaScript.
обработка-javascript-in-scrapy-with-splash

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...