Это должно решить ваши проблемы:
Функция range () возвращает последовательность чисел, начиная с 0 по умолчанию и увеличивая на 1 (по умолчанию), и заканчивая указанным номером.
Синтаксис:
range(start, stop, step)
https://docs.python.org/3/library/functions.html#func-range
Замените ваш код на:
company_id = ["11003058","11003059","00930291"]
for i in company_id:
url = 'https://beta.companieshouse.gov.uk/company/' + str(i) + '/officers'
pages.append(url)
Вы должны инициализировать soup как списокдо итерации страниц:
soup = []
и добавить в список супов:
for item in pages:
page = requests.get(item)
soup.append(bs(page.text, 'lxml'))
список печати имен:
names = []
for items in soup:
h2Obj = items.select('[class^=appointment]:not(.appointments-list):has([id^="officer-role-"]:contains(Director)) h2')
for i in h2Obj:
tagArray = i.findChildren()
for tag in tagArray:
if isinstance(tag,Tag) and tag.name in 'a':
names.append(tag.text)
O / P:
['MASRAT, Suheel', 'MARSHALL, Jack', 'SUTTON, Tim', 'COOMBES, John Frederick', 'BROWN, Alistair Stuart', 'COOMBES, Kenneth', 'LAFONT, Jean-Jacques Mathieu', 'THOMAS-KEEPING, Lindsay Charles', 'WILLIAMS, Janet Elizabeth', 'WILLIAMS, Roderick', 'WRAGG, Barry']
Добавить начало скрипта:
из тега импорта bs4.element