2016-09-03 7 views
0

На домашней странице веб-сайта, который я пытаюсь очистить, отображаются четыре вкладки, одна из которых читает «[Number] Available Jobs». Мне интересно соскабливать значение [Number]. Когда я просматриваю страницу в Chrome, я вижу значение, заключенное в тег <span>.Как очистить значение от страницы, загружаемой динамически?

enter image description here

Однако, нет ничего заключена в том, что <span> теге при просмотре исходного кода страницы непосредственно. Я планировал использовать модуль Python requests для выполнения запроса HTTP GET, а затем использовать regex для захвата значения из возвращаемого содержимого. Это, очевидно, невозможно, если содержание не содержит числа, которое мне нужно.

Мои вопросы:

  1. Что здесь происходит? Как можно динамически загружать значение на страницу , отображаемую, а затем не появляться в исходном HTML-источнике?

  2. Если значение не отображается в источнике страницы, что я могу сделать, чтобы достичь?

+0

Вы можете использовать селен: https://pypi.python.org/pypi/selenium – Javier

ответ

0

1.Ы значение может быть загружено динамически с помощью AJAX, AJAX загружает асинхронно, что означает, что остальная часть сайта не ждать Аякса быть вынесен, поэтому, когда вы получаете DOM элементов загружены с помощью AJAX не появляется в нем.

2.Дль выскабливания динамического содержимого вы должны использовать селен, here a tutorial

2

Если содержимое не отображается в исходном коде страницы, то это, вероятно, сгенерированный с помощью JavaScript. Например, у сайта может быть REST API, который перечисляет задания, а код Javascript может запрашивать задания из API и использовать его для создания узла в DOM и прикрепления его к доступным заданиям. Это только одна возможность.

Один из способов отказаться от этой информации - выяснить, как работает этот javascript и сделать ваш скребок python тем же самым (например, если есть простой REST API, который он использует, вам просто нужно сделать запрос тот же URL). Часто это не так просто, поэтому еще одна альтернатива - делать ваши выскабливания, используя браузер, поддерживающий JavaScript, например селен.

Последнее, что я хочу упомянуть, это that regular expressions are a fragile way to parse HTML. Обычно вы предпочитаете использовать библиотеку типа BeautifulSoup.

0
  1. данные, которые загружаются динамически, вы должны искать xhr-запрос в сетях, и если вы можете сделать эти данные полезными для вас, чем вуаля!
  2. вы можете использовать phantom js, это безгласный браузер, и он захватывает html этой страницы с динамически загружаемым контентом.