2012-01-23 13 views
1

質問ここで1は私のPythonコード

HTMLコードがあるでXPathを使用してデータを抽出する上で助けが必要です。

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

xpathを使用してその電話番号を抽出しようとしています。

私はそれらの両方がnullを返すだけ

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

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

を試してみました。誰か私にその電話番号を抽出するコードを表示できますか?

質問2

HTMLコードは、私は、文字列ウェブサイト=のhttp%3A%2F%2Fの隣に位置してリンクを取得したい

<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> 

です。この文字列はhref属性の値にあります。したがって、上記の例では、私はwww.ruthnewman.com.auを望んでいます。私はXpathを使ってそれを得る方法を知らない。

誰かが助けてくれますか?

+1

スペルミス: "preferredcontact"対 "preferredContact"。 – mzjn

+0

ねえ、ありがとう、それは働いた!その2番目の質問の助け? –

+0

私は最初に2番目の質問を誤解したと思います。私の編集した答えがそれに対処すれば教えてください。 –

答えて

1

属性は大文字と小文字が区別されます。

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

2番目の質問の使用の場合:

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

この最初の入力としてこれを使用して、その後、属性に'webSite=http%3A%2F%2F'後にすべてを選択最初の質問の使用(キャップ​​なし)の場合substring-beforeは、のすべてをの前に抽出します。最初の&には、ターゲット文字列を含める必要があります。

与えられた例では、descendant-or-self//)軸は実際には必要ないことに注意してください。可能な限り避けてください。得られる柔軟性は、精度と効率を犠牲にしてもたらされます。

+0

私は理由を知ることはできませんが、 'substring-before(部分文字列の後に( .//a[contains(@href、 'webSite =')]/@ href、 'webSite = http%3A%2F%2F')、 & ') 'が無効な構文エラーをスローします。 –

関連する問題