/ / Конфигуриране на crawler import.io с xpath или regexp - regex, xpath, web-crawler, import.io

Настройване на робота за import.io с xpath или regexp - regex, xpath, web-crawler, import.io

В момента се опитвам да настроя уеб браузъризвличане на данни от уеб сайтове за недвижими имоти. Тенденцията при тези сайтове е, че определена информация не е на едно и също място за всяка страница, така че трябва да измисля как да извлече текстови елементи, които съдържат определени фрази, а не въз основа на това къде се намират. Ето няколко примера за такива страници:

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 за отговор № 1

Regex не ви позволява да извличате данни, само за да почистите или модифицирате вече извлечен текст.

Трябва да създадете XPath, за да извлечете желаните от вас данни. Направих едно за вас като пример:

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

Обяснение: това търси основната част на страницата и след това търси a <li> който съдържа текста "MLS", Това ще извлече нещо подобно "MLS #: 66521347"

Вече можете да изберете типа колона като "число", за да получите само числото (можете да го направите и с регулярно изражение, това е точно вида, който можете да направите с него).

РЕДАКТИРАНЕ: Въпреки че този XPath е правилен, той не връща данните в import.io. Има и друг начин да го направите: Използване на XPath за въвеждане на целия текст в този раздел и след това с помощта на regex за избор на MLS.

XPath за използване:

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

Regex за използване:

MLS #: (d+)