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

我正在通過打開每個鏈接,然後這裏是給我的問題的頁面。它只有一個'td',這隻有一個TD:用布爾值迭代python列表

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

,這裏是一個正常的頁面的樣子有2 'td'

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

誰能告訴我我該怎麼跑只有這條線是真的。我無法弄清楚語法。只是爲了一點點背景,如果需要我用Python和BS4網頁瀏覽。如果有任何其他信息可以幫助我們。謝謝

+0

「只有當它是真的」< - 只有當真的是對的? – smarx

+0

只有當元素('td')[1]爲真或者換句話說,只有當第二個('td')元素出現在html – joedirt

+0

中時,我才需要將它設置爲lambda函數? – 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-的型尋找第二TD

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

如果在表格內沒有第二個TD則將找不到任何東西,所以你最終得到的錨文本列表或沒有,所以你不需要任何其他邏輯來獲取數據。