Нужна помощь по извлечению данных с использованием Xpath в моем коде Python - PullRequest
1 голос
/ 24 января 2012

Вопрос 1

Вот код HTML.

<div class="preferredContact paragraph">ph:<span preferredcontact="40">(02) 9540 9959</span></div> 

Я пытаюсь извлечь этот номер телефона с помощью xpath.

Iпробовал

data['phone'] = c.xpath('.//span[@preferredContact="40"]/text()')

и

data['phone'] = c.xpath('.//span[contains(@preferredContact,"40")]/text()')

Они оба возвращают только ноль.Может кто-нибудь показать мне код для извлечения этого номера телефона, пожалуйста?

Вопрос 2

HTML-код

<a rel="nofollow" title="View website for Ruth Newman Architect (in new window)" target="_blank" name="listing_website" id="websiteLink40" alreadysentorpevent="false" class="links ext-no-tooltip orpDuplicateEvent" href="/app/redirect?headingCode=27898&amp;productId=473639214&amp;productVersion=1&amp;listingUrl=%2Fnsw%2Fgymea-bay%2Fruth-newman-architect-12781682-listing.html&amp;webSite=http%3A%2F%2Fwww.ruthnewman.com.au&amp;pt=w&amp;context=businessTypeSearch&amp;referredBy=YOL&amp;eventType=websiteReferral">www.ruthnewman.com.au
</a>

Я хочу получитьссылка, которая находится рядом со строкой webSite = http% 3A% 2F% 2F .Эта строка находится в значении атрибута href.Итак, в приведенном выше примере я хочу www.ruthnewman.com.au .Я не знаю, как получить это с помощью Xpath.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 24 января 2012

Атрибуты чувствительны к регистру. Для первого вопроса используйте (без заглавных букв):

.//span[@preferredcontact='40']/text()

Для второго вопроса используйте:

substring-before(substring-after(
    .//a[contains(@href, 'webSite=')]/@href, 'webSite=http%3A%2F%2F'), '&')

Сначала он выбирает все после 'webSite=http%3A%2F%2F' в атрибуте, затем, используя его в качестве входных данных для substring-before, извлекает все до первого &, что должно содержит целевую строку.

Обратите внимание, что в приведенных вами примерах ось descendant-or-self (//) на самом деле не нужна. Старайтесь избегать этого всякий раз, когда это возможно. Полученная гибкость достигается за счет точности и эффективности.

...