2015-06-22 2 views
5

В настоящее время я пытаюсь настроить веб-искатель для извлечения данных с веб-сайтов недвижимости. Это тенденция с этими сайтами, что определенная информация не находится в одном месте для каждой страницы, поэтому я должен выяснить, как ее извлечь текстовые элементы, содержащие определенные фразы, а не на основе того, где они находятся. Вот некоторые примеры таких страниц:Настройка import.io crawler с xpath или regexp

http://www.zillow.com/homedetails/2630-Hazy-Creek-Dr-Houston-TX-77084/28388488_zpid/

http://www.zillow.com/homedetails/16514-Park-Firth-Dr-Houston-TX-77084/28357799_zpid/

Обратите внимание, как появляется определенная информация, например, как MLS # в разных местах. Когда я извлекаю xpath из одной из этих записей, я получаю: // * [@ id = "yui_3_15_0_1_1435013689406_3296"], и поскольку я не слишком хорошо знаком с xpath, я не знаю, как изменить его, чтобы найти некоторые (я, конечно, пробовал, но он никогда не срабатывает). Regexp кажется многообещающим инструментом, но когда я использую команду^MLS, которая должна искать элементы, начинающиеся с «MLS», она просто не работает. Я знаю, что должен быть простой способ сделать это, но это мой первый раз, когда я использую эту услугу, поэтому я еще не знаком с ней. И совет будет очень благодарен.

ответ

6

Regex не позволяет извлекать данные, только для очистки или изменения уже извлеченного текста.

Вам необходимо создать XPath для извлечения необходимых данных. Я сделал один для вас, например:

//*[@role="main"]//li[contains(text(), "MLS ")] 

Объяснения: что ищет основную часть страницы, а затем искать <li>, содержащий текст "MLS". Это извлечет что-то вроде "MLS #: 66521347"

Теперь вы можете выбрать тип столбца как «число», чтобы получить только номер (вы могли бы это сделать и с регулярным выражением, это именно то, что вы можете с ним сделать).

EDIT: Несмотря на то, что XPath верен, он не возвращает данные в import.io. Существует еще один способ сделать это: с помощью XPath вывести весь текст в этом разделе, а затем с помощью регулярного выражения выбрать MLS.

XPath использовать:

//*[@role="main"]/section[@class="zsg-content-section "][1] 

Regex использовать:

MLS #: (\d+) 
+0

Спасибо большое, но, как представляется, проблема с этим. Когда я использую этот путь, import.io выделяет номер MLS на странице при выборе столбца, но он не отображается в самом столбце. Как-то он распознает правильную запись, не извлекая ее. – user2480757

+0

Я только что отредактировал свой первоначальный ответ с новым xpath + regex, который действительно работает на import.io – ignacioelola

+0

И это работает как шарм. Большое спасибо. – user2480757