2017-08-28 3 views
0

私はちょうどPythonでコーディングを開始しています。私の友人は、ウェブ上の特定のデータを見つけるアプリケーションを求めました。 私はすでにかなりのウェブを見つけました。そこにはデータが含まれていますが、私は基本的な情報を見つけることができますが、それから深くすることが課題です。bs4親attrs python

<tr class=" " somethingc1="" somethingc2="" somethingc3="" data-something="1" something="1something6" something_id="6something0"> 
<td class="text-center td_something"> 
<div> 
<a href="something/126" target="_blank">Super String of Something</a> 
</div> 
</td> 
<td class="text-center">08/26 15:00</td> 
<td class="text-center something_status"> 
<span class="something_status_something">Full</span> 
</td> 
</tr> 
<tr class=" " somethingc1="" somethingc2="" somethingc3="" data-something="0" something="1something4" something_id="6something7"> 
<td class="text-center td_something"> 
<div> 
<a href="something/146" target="_blank">Super String of Something</a> 
</div> 
</td> 
<td class="text-center">05/26 15:00</td> 
<td class="text-center something_status"> 
<span class="something_status_something"></span> 
</td> 
</tr> 

私が今やりたいことだけ、親のデータ-何か=「1」の場合とない場合の日付文字列を見つけることです:私は、例示的なコードに達しているのPython 3.4でBS4を使用しながら、

=「0」

データ-何か私は、すべての日付をスクラップすることができます

soup.find_all(lambda tag: tag.name == 'td' and tag.get('class') == ['text-center'] and not tag.has_attr('style')) 

が、それは親をチェックしません。それが私が試した理由です:

def KieMeWar(tag): 
    return tag.name == 'td' and tag.parent.name == 'tr' and tag.parent.attrs == {"data-something": "1"} #and tag.get('class') == ['text-center'] and not tag.has_attr('style') 
soup.find_all(KieMeWar) 

結果は空のセットです。何が間違っているのか、どのようにターゲットに到達するのですか?最も簡単な解決策を目指していますか?

P.S.これは完全なコードの典型的な部分です。つまり、ここには表示されませんが後で実行されますが、スタイルを使用しない理由です。

+0

を抽出するための第二tdタグをつかみます。 –

答えて

1

BeautifulSoupのfindAllは、属性data-something="1"ですべてtrのタグを見つけ、指定された属性

import bs4 
soup = bs4.BeautifulSoup(html) 
trs = soup.findAll('tr', attrs={'data-something':'1'}) 

とタグを検索するために使用されているattrs kwargを持っています。その後、あなたはtrsをループができるとたぶん、あなたは、XPathを参照してそれを達成することができ、日付

for t in trs: 
    print(str(t.findAll('td')[1].text)) 
    >>> 08/26 15:00 
+0

しかし、コードの別の部分には別の文字列がありますので、複数の偽の回答もあります。私はしませんか?とにかくありがとうございます。 とにかくテストのためにこのアプローチを実装しようとします。 – PerfectionQuest

+0

非常にうまく動作します。今私はちょうど理由を理解する必要があります:)再びありがとう! – PerfectionQuest

関連する問題