2016-07-27 51 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则将找不到任何东西,所以你最终得到的锚文本列表或没有,所以你不需要任何其他逻辑来获取数据。