Как предложил Патрик,
source.first() возвращает только первый элемент.
Исходный код метода first() для справки:
def find(self, name=None, attrs={}, recursive=True, text=None, **kwargs):
"""Return only the first child of this Tag matching the given criteria."""
r = None
l = self.find_all(name, attrs, recursive, text, 1, **kwargs)
if l:
r = l[0]
return r
findChild = find
После извлечения таблицы имя класса было wikitable sortable
.
Таким образом, согласно приведенному выше коду, он возвращал None
.
Итак, вы можете изменить свой код как...
from bs4 import BeautifulSoup
from urllib.request import urlopen
url = 'https://simple.wikipedia.org/wiki/List_of_U.S._states'
web = urlopen(url)
source = BeautifulSoup(web, 'html.parser')
table = source.find('table', class_='wikitable')
abbs = table.find_all('b')
abbs_list = [i.get_text().strip() for i in abbs]
print(abbs_list)
Я надеюсь, что это ответит на ваш вопрос. :)
person
Mohsin
schedule
19.11.2017
source.find
возвращаетNone
, у которого нет атрибутаfind_all
- person Patrick Haugh   schedule 19.11.2017