2016-07-27 19 views
0
class_abbrevs_2 = [x.text for x in subject_page.find_all('td')[1].find_all('a')] 

私は各リンクを開いて、次に私に問題を与えているページです。誰かが私を実行する方法を教えてもらえますpythonリスト反復でブール値

http://registrar.indiana.edu/browser/soc4168/CSCI/index.shtml 

http://registrar.indiana.edu/browser/soc4168/CTIH/index.shtml 

、ここではそれが2 'td'を持っているように、通常のページが見えるものです:それは、唯一の'td'、これが唯一の単一のTDを持っていこの行は、それが本当である場合のみです。私は構文を理解することはできません。必要ならばちょっとした背景のために、私はPythonとBS4でwebscrapingしています。他に助けになる情報がある場合は、Lmkを参照してください。ありがとう

+0

"本当の場合のみ" < - 本当の場合のみ? – smarx

+0

要素( 'td')[1]が真である場合、つまり、2番目の要素( 'td')がhtmlの – joedirt

+0

に存在する場合のみ、ラムダ関数で設定する必要がありますか? – joedirt

答えて

2

私が上記のコメントから正しく理解していれば、これはほしいと思う?

tds = subject_page.find_all('td') 
if len(tds) > 1: 
    class_abbrevs_2 = [x.text for x in tds[1].find_all('a')] 
+0

うん、それはうまくいって、はい、私はあなたが言っているものを見ることができます。どうもありがとうございました。 – joedirt

0

あなたは使用して選択するようにコードを単純化することができますn番目-の型の第2 TDを探すために

text = [a.text for a in soup.select("#crsebrowser td:nth-of-type(2) a")] 

テーブルの内部には、第二のTDは、それを存在しない場合アンカーからのテキストのリストで終わるものは何も見つかりませんので、データを取得するための他のロジックは必要ありません。