使用布尔

时间:2016-07-27 20:26:05

标签: python-3.x web-scraping beautifulsoup boolean

class_abbrevs_2 = [x.text for x in subject_page.find_all('td')[1].find_all('a')]

我正在打开每个链接,然后这是给我问题的页面。它只有一个'td',它只有一个td:

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

以下是普通页面看起来有2 'td'

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

有人可以告诉我,只有这样才能运行此行。我无法弄清楚语法。只是为了一点背景,如果需要我使用python和BS4进行webscraping。 Lmk如果有任何其他信息可以帮助。感谢

2 个答案:

答案 0 :(得分:2)

如果我从上面的评论中正确理解,我想你只是想要这个?

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

答案 1 :(得分:0)

您可以使用 nth-of-type 将代码简化为选择,以查找第二个 td

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

如果表格中没有第二个td,那么它将找不到任何内容,因此您最终会得到来自锚点的文本列表,或者没有任何内容,因此您不需要任何其他逻辑来获取数据。