Соскоб веб-страницы и нужно выбрать правильный селектор - PullRequest
0 голосов
/ 17 октября 2018

Это мой первый раз, когда я использую Scrapy после просмотра нескольких туториалов, я пытаюсь почистить этот URL

https://www.hackster.io/arduino/members

Я хочу получить ссылки на каждый профиль пользователя.Я запустил свою оболочку scrapy следующим образом

print(response.css("#main > div > div > div > div:nth-child(2) > div.hckui__layout__container > div.hckui__layout__wrapper1170 hckui__layout__fullScreenHeight > div > div.common-overlay__parent__1A_nT > div.grid__gridBasic__fjt5B grid__grid__1QeD6 grid__guttersH__2MYvz grid__guttersV__3M28R > div:nth-child(1) > div.undefined hckui__layout__flexCenterItems > div.user_card__content__1YVc5 > a.hckui__typography__bodyM hckui__typography__link hckui__typography__bold::attr(href)").extract())

, но в качестве вывода я получаю только []

Я хочу получить ссылку, указанную на фотографии, прилагаемойКто-нибудь может, пожалуйста, посмотрите и скажите мне, если что-то не так с моей командой?

URL для удаления

, когда я использовал опцию Google Chorme Inspect ископировал селектор сразу же я получил тот же вывод

#main > div > div > div > div:nth-child(2) > div > div > div > div.common-overlay__parent__1A_nT > div > div:nth-child(1) > div > div > a
or even using

#main > div > div > div > div:nth-child(2) > div > div > div > div.common-overlay__parent__1A_nT > div 

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Чтобы проверить, какой ответ получает сканер скрапа: -

  1. Открыть терминал
  2. Команда запуска Оболочка scrapy https://www.hackster.io/arduino/members
  3. Команда запуска просмотр (ответ)

Ответ, увиденный сканеру, будет показан в вашем веб-браузере по умолчанию.

Из этого ответа вы можете проверить, работает ли ваш сканер.получение содержимого, которое вы хотите очистить!

Как видно из ответа, вы не получаете Arduino_Genuino в ответе, это определенно случай рендеринга JavaScript на стороне клиента.

Снимок экрана веб-страницы, видимый сканеру.

Чтобы очистить данные с таких страниц , вам необходимо использовать механизм рендеринга JavaScript, напримеркак scrapy-splash, который запускается на вашем локальном хосте: 8050

Вы должны передать URL для очистки механизму рендеринга заставки и после некоторого времени ожидания, когда JavaScript полностью загружен в заставку на localhost: 8050, у вас естьочистить данные оттуда.

См. всплеск документов: https://splash.readthedocs.io/en/stable/api.html

0 голосов
/ 17 октября 2018

Это потому, что HTML-код, который вы видите в консоли Chrome, построен на стороне клиента в javascript.Scrapy по умолчанию не интерпретирует javascript и не читает исходный код страницы, как он отправляется сервером.Смотрите мой ответ здесь , чтобы найти решение вашей проблемы.

...