2016-10-30 20 views
0

私はいくつかのhtmlコードを持っていますので、クラス内のいくつかのカテゴリでは小出しとhrefを抽出する必要があります。 HTMLは次のとおりです。beautifoulsoapでhrefとtitleを抽出できません

<div class="submenu_img3" > 
       <ul class="submenu_list3 visible_false"> 
         <li class=""> 

       <input type="hidden" name="has_subcategories" value="0"/> 
       <input type="hidden" name="has_thirdlevel" value="0"/> 
       <input type="hidden" name="level" value="0"/> 
       <input type="hidden" name="posicion" value="0"/> 
       <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_6511"> 
        <span class="txt" > 
         Cerdo selecta      </span> 
       </a> 
      </li> 
          <li class=""> 

       <input type="hidden" name="has_subcategories" value="0"/> 
       <input type="hidden" name="has_thirdlevel" value="0"/> 
       <input type="hidden" name="level" value="2"/> 
       <input type="hidden" name="posicion" value="1"/> 
       <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_130201"> 
        <span class="txt" > 
         Cerdo Blanco      </span> 
       </a> 
      </li> 
          <li class=""> 

       <input type="hidden" name="has_subcategories" value="0"/> 
       <input type="hidden" name="has_thirdlevel" value="0"/> 
       <input type="hidden" name="level" value="2"/> 
       <input type="hidden" name="posicion" value="2"/> 
       <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_130202"> 
        <span class="txt" > 
         Cerdo de Teruel      </span> 
       </a> 
      </li> 
          <li class=""> 

       <input type="hidden" name="has_subcategories" value="0"/> 
       <input type="hidden" name="has_thirdlevel" value="0"/> 
       <input type="hidden" name="level" value="2"/> 
       <input type="hidden" name="posicion" value="3"/> 
       <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_130203"> 
        <span class="txt" > 
         Cerdo Ibérico      </span> 
       </a> 
      </li> 

しかし、これらのコードを、私は何かを得るカント:

for row in soup.find_all('div',attrs={"class" : "submenu_img3"}, href=True): 
    print row.text 
    print row.a['href'] 

あなたは私を助けてくださいもらえますか?ありがとう、ごめんなさい。

+0

を非常に強力である'ゼロのアイテムを見つけましたか? – enkryptor

+0

はい、htmlは長いですが、少し断片を抽出しました – defekas17

+1

'href'引数がないとどうなりますか? 'soup.find_all( "div'"。class _ = "submenu_img3") – enkryptor

答えて

2

私は、あなたの目的は、クラスsubmenu_img3を持つすべてのdivタグ内のすべてのタグのhrefとテキストを取得することだと推測しています。 find_allの問題はhref属性です。このコードは、beautifulsoupにhrefプロパティを持つすべてのdivタグを検索するよう要求していますが、HTMLには何もありません。

CSSセレクタを使用できるselect callを使用する方がずっと簡単です。ここで

soup = BeautifulSoup(html_doc, 'html.parser') 
for row in soup.select('div.submenu_img3 a'): 
    print "Text:", row.text.strip() 
    print "Href:", row['href'] 

クラスsubmenu_imgg3のDIVタグ内に完全なコードを全てのAタグを見つけるためのコードは次のとおりです。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
from bs4 import BeautifulSoup 

html_doc = """ 
<div class="submenu_img3" > 
    <ul class="submenu_list3 visible_false"> 
     <li class=""> 
      <input type="hidden" name="has_subcategories" value="0"/> 
      <input type="hidden" name="has_thirdlevel" value="0"/> 
      <input type="hidden" name="level" value="0"/> 
      <input type="hidden" name="posicion" value="0"/> 
      <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_6511"> 
       <span class="txt" > Cerdo selecta </span> 
      </a> 
     </li> 

     <li class=""> 
      <input type="hidden" name="has_subcategories" value="0"/> 
      <input type="hidden" name="has_thirdlevel" value="0"/> 
      <input type="hidden" name="level" value="2"/> 
      <input type="hidden" name="posicion" value="1"/> 
      <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_130201"> 
       <span class="txt" > Cerdo Blanco</span> 
      </a> 
     </li> 

     <li class=""> 
      <input type="hidden" name="has_subcategories" value="0"/> 
      <input type="hidden" name="has_thirdlevel" value="0"/> 
      <input type="hidden" name="level" value="2"/> 
      <input type="hidden" name="posicion" value="2"/> 
      <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_130202"> 
       <span class="txt" > Cerdo de Teruel </span> 
      </a> 
     </li> 

     <li class=""> 
      <input type="hidden" name="has_subcategories" value="0"/> 
      <input type="hidden" name="has_thirdlevel" value="0"/> 
      <input type="hidden" name="level" value="2"/> 
      <input type="hidden" name="posicion" value="3"/> 
      <a href="https://www.alimentacion.alcampo.es/tienda/index.php?cPath=2112_13_1302_130203"> 
       <span class="txt" > Cerdo Ibérico </span> 
      </a> 
     </li> 
    </ul> 
</div> 
""" 

soup = BeautifulSoup(html_doc, 'html.parser') 
for row in soup.select('div.submenu_img3 a'): 
    print "Text:", row.text.strip() 
    print "Href:", row['href'] 

は、CSSセレクタのためのW3Cのリンクを参照してください。 CSSセレクタは、({ "クラス": "submenu_img3"} attrsに= 'DIV'、HREF = Trueが)だから、基本的に `soup.find_all

http://www.w3schools.com/cssref/css_selectors.asp 
関連する問題