2017-01-08 37 views
0

私は、下のコードブロックの画像の 'alt'タグを抽出しようとしています。周辺divのクラスは 'onIcon'です。(例= ModelcontractまたはKabeltelevisie)XpathとPythonでaltタグを抽出

<tbody> 
 
<tr class="odd"><td><div class="roomdetail_icon onIcon Modelcontract"><a href="/nl/modelcontract"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_modelcontract_on.png" alt="Modelcontract" /></a></div></td><td><div class="roomdetail_icon onIcon Kamer"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_room_on.png" alt="Kamer" /></div></td><td><div class="roomdetail_icon offIcon Studio"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_studio_off.png" alt="Studio" /></div></td><td><div class="roomdetail_icon offIcon Appartement"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_apartment_off.png" alt="Appartement" /></div></td><td><div class="roomdetail_icon onIcon Internet"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_internet_on.png" alt="Internet" /></div></td> </tr> 
 
<tr class="even"><td><div class="roomdetail_icon onIcon Kabeltelevisie"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_cable_tv_on.png" alt="Kabeltelevisie" /></div></td><td><div class="roomdetail_icon onIcon Gemeenschappelijke leefruimte"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_shared_living_space_on.png" alt="Gemeenschappelijke leefruimte" /></div></td><td><div class="roomdetail_icon onIcon Tuin/terras"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_garden_on.png" alt="Tuin/terras" /></div></td><td><div class="roomdetail_icon onIcon Fietsenstalling"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_bicycle_shed_on.png" alt="Fietsenstalling" /></div></td><td><div class="roomdetail_icon offIcon Beddengoed"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_bedding_off.png" alt="Beddengoed" /></div></td> </tr> 
 
<tr class="odd"><td><div class="roomdetail_icon onIcon Keukengerei"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_kitchen_utensils_on.png" alt="Keukengerei" /></div></td><td><div class="roomdetail_icon offIcon Muziekinstrumenten toegelaten"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_musical_instruments_allowed_off.png" alt="Muziekinstrumenten toegelaten" /></div></td><td><div class="roomdetail_icon offIcon Roken niet toegelaten"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_smoking_allowed_off.png" alt="Roken niet toegelaten" /></div></td><td><div class="roomdetail_icon offIcon Huisdieren wel/niet toegelaten"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_animals_allowed_off.png" alt="Huisdieren wel/niet toegelaten" /></div></td><td><div class="roomdetail_icon offIcon Bemeubeld"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_furnished_off.png" alt="Bemeubeld" /></div></td> </tr> 
 
<tr class="even"><td><div class="roomdetail_icon offIcon Toegankelijk voor rolstoelgebruikers"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_wheelchair_accssible_off.png" alt="Toegankelijk voor rolstoelgebruikers" /></div></td><td><div class="roomdetail_icon offIcon Geschikt voor allergiepatienten"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_allergies_off.png" alt="Geschikt voor allergiepatienten" /></div></td><td><div class="roomdetail_icon offIcon Verhuur aan niet-studenten"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_non_students_off.png" alt="Verhuur aan niet-studenten" /></div></td><td><div class="roomdetail_icon offIcon Straatkant"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_street_off.png" alt="Straatkant" /></div></td><td><div class="roomdetail_icon onIcon Niet aan straatkant"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_notstreet_on.png" alt="Niet aan straatkant" /></div></td> </tr> 
 
<tr class="odd"><td><div class="roomdetail_icon onIcon Building regulations"><img src="/sites/all/themes/kotweb/images/icons/grid/grid_building_regulations_on.png" alt="Building regulations" /></div></td> </tr> 
 
</tbody>

私は、PythonでのXPathを使用していますし、次の問合せを得ていた:

'features': response.xpath("//div[@class='onIcon']//img/@alt").extract() 

残念ながら、これは(空の配列を返します。 [])。

私はかなり長い間、これに取り組んできました。何が間違っていますか?

種類よろしく、 トーマス

答えて

0
response.xpath("//div[@class[contains(., 'onIcon')]]//img/@alt") 

クラスの値だけではなくonIconroomdetail_icon onIcon Modelcontract、である、あなたは

.は、現在のコンテキストノード(@class)を意味contains機能を使用する必要があります。

アウト:

['Modelcontract', 
'Kamer', 
'Internet', 
'Kabeltelevisie', 
'Gemeenschappelijke leefruimte', 
'Tuin/terras', 
'Fietsenstalling', 
'Keukengerei', 
'Niet aan straatkant', 
'Building regulations'] 

あなたが[@class='onIcon']を行うたびに、XPathはいくつかのステップものの行こう:

  1. XPathの通知があった文字列'onIcon'があるので、その場合には、文字列に@classを変換しますそれらの2つを比較することができます。文字列へ@classを変換するために
  2. は、string()機能があり、string(@class)は、クラスの値を返しますroomdetail_icon onIcon Modelcontract
  3. 最後に、XPathは、これはそれを整理、そんなに['roomdetail_icon onIcon Modelcontract'='onIcon']
+0

感謝を比較します! @ class定義のXPath –

+0

から混乱しました@Thomas Blomme私はいくつかの説明を追加しました。この質問を閉じるための答えを受け入れてください。 –

関連する問題