PHP / Javascript - парсинг HTML с моего университетского сайта - PullRequest
2 голосов
/ 04 декабря 2010

Я пытаюсь разобрать курсы с этой страницы: http://college.usc.edu/cf/course-guide/genelects.cfm. В частности, курсы категории II.

Я не слишком знаком с javascript, но кажется, что при нажатии на ссылку cat II этот метод вызывается:

function GetClassList(catid,sem,semester)
{
  jQuery('#FallClasses_'+catid).hide();
  jQuery('#SpringClasses_'+catid).toggle();
  jQuery('#SpringClasses_'+catid).load('genelects-ajax-getclasslist.cfm', {catid:catid,sem:sem});
}

Проблема в том, что я нигде не вижу курсов в html. Вроде бы все сделано на стороне сервера.


ИЗМЕНИТЬ!

Итак, я обнаружил, где в DOM размещаются данные. Я использовал Firebug.

Я посмотрел на DOM, связанный с этим div:

<div id="SpringClasses_2" style="display: none; "/>

Затем на вкладке Firebug DOM я:

1) Clicked +children.
2) Found the html I need under +innerHTML.

Теперь я понимаю, как найти данные. Но мне нужно написать скрипт (запустить в другом домене) для разбора этого DOM. Как я могу это сделать? Как я могу получить этот DOM со страницы колледжа, а затем проанализировать его?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2010

Я бы, наверное, поступил иначе ...
(то есть небольшой клиент командной строки php или perl, выполняющий регулярное выражение с регулярным выражением)

Но, учитывая то, что вы получили, вы можете добавить свою скрытую форму на эту страницу и использовать элемент <input> для хранения данных, которые вы получаете с помощью javascript. Затем submit() на сервер, которым вы управляете. Даже местный. Даже на localhost.

AFAIK, никакой неясный механизм безопасности не должен срабатывать, таким образом.

IIRC что-то вроде

var input=$('<input name="data" value=""/>')
var form=$('<form style="display:none"
                  action="http://myserver.example.com/post-junk-here.php"
                  method="post">
            <input type="submit">
            </form>')

$('html').append(form.append(input))
input.value=my_hard_earned_data
form.submit()

должен это сделать.

0 голосов
/ 05 декабря 2010

Ваш код может выглядеть следующим образом:

function GetClassList(catid,sem,semester)
{
  $('#FallClasses_'+catid).hide();
  $('#SpringClasses_'+catid).toggle();

    $.ajax({
                type: 'POST',
                url: 'genelects-ajax-getclasslist.cfm',
                data: 'catid='+encodeURIComponent(catid)+'&sem='+encodeURIComponent(sem),
                success: function(data){
                jQuery('#SpringClasses_'+catid).html(data);
                }
        });
}

Только будьте осторожны, сценарий genelects-ajax-getclasslist.cfm возвращает только HTML-данные, которые вы хотите поместить в #SpringClasses_'+catid контейнер. Сценарий genelects-ajax-getclasslist.cfm должен находиться в том же домене Интернета, что и этот источник JavaScript, иными словами, он должен быть локальным, а не удаленным.

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