2015-05-28 1 views
4

Я пытаюсь создать CSV-файл с данными фильмов с сайта Allociné (крупнейшей французской базы данных фильмов) для исследовательского проекта, используя import.io's Crawler, потому что мои знания в области программирования плохие (в настоящее время занимаются PhD в области экологии), а простой инструмент для понимания - лучшая идея.Невозможно получить правильные элементы XPath для веб-страницы в искателе import.io

Для каждого фильма мне нужно:

  1. титров фильма
  2. дата выпуска ('Дата де Sortie' в FR)
  3. жанра (ов) из фильма

Вот пример страницы фильма Allociné (для Star Wars I): http://www.allocine.fr/film/fichefilm_gen_cfilm=20754.html

Сначала я тр с использованием инструмента выбора import.io, но это не сработало, потому что в некоторых фильмах есть две даты релиза вместо одного (например, SW1 выше - оригинальный релиз в 1999 году и 3D-релиз ('reise') в 2012 году), который был привинчен к Crawler. Поэтому я должен был использовать XPath для определения элементов, которые мне нужны. Название работает просто отлично (с использованием //title), но у меня есть проблемы с датами выпуска и жанрами.

для даты выпуска, то в XPath я извлек из источника странице:

//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[2]/td/a/strong/span 

Я добавил /@content в конце, чтобы получить дату в формате YYYY-MM-дд, что привело к:

//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[2]/td/a/strong/span/@content 

Однако import.io не распознает элемент, который мне нужен, чтобы найти.

жанров, то же самое, я получил это XPath от Chrome для первого жанра (научно-фантастического):

//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[5]/td/a[1]/span 

мне нужно import.io собрать все жанры, так что я удалил [1] из a[1] для получения всего a.

//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[5]/td/a/span 

Он также не работает, import.io возвращает нулевой элемент.

Итак, любое объяснение причин, по которым оно не работает, было бы чрезвычайно оценено! И извините, если я пропустил что-то явно очевидное, как я уже сказал, я не специалист.

Блез

ответ

2

даты релиза попробовать:

// диапазон [@ itemprop = "datePublished"]/@ содержание

В основном это означает: найти узел диапазона, который имеет атрибут "datePublished" и извлечь атрибут "содержание"

а для жанра попробовать:

// диапазон [@ itemprop = "жанр"]/текст()

Это означает поиск узла диапазона, который имеет атрибут с именем «жанр» и извлекает текст, который следует за ним.