#Extract Record
for person in soup.find_all(['b','h1']):
with open('test.csv', 'a') as csv_file:
writer = csv.writer(csv_file)
#Header
header_tag = soup.find_all('h1')[k]
k += 1
header = header_tag.text.strip().replace('\n', ' ').encode('windows-1252', errors='replace')
print(header)
#Name
name_tag = header_tag.find_all_next('p')[1]
name = name_tag.text.strip().replace('\n', ' ').encode('windows-1252', errors='replace')
print(name)
#writer.writerow([name])
#Workplace
workplace_tag = name_tag.find_all_next('i')[0]
workplace = workplace_tag.text.strip().replace('\n', ' ').encode('windows-1252', errors='replace')
print(workplace)
#writer.writerow([workplace])
#Abstract
while workplace_tag.find_all_next('p')[l] != 'h1':
abstract_tag = workplace_tag.find_all_next('p')[l]
abstract = abstract_tag.text.strip().replace('\n', ' ').encode('windows-1252', errors='replace')
l += 1
print(abstract)
#writer.writerow([abstract])
Код выше выводит то, что мне нужно.За исключением одной проблемы, когда я пытаюсь объединить теги p цикла while в нижней части кода в Abstract, я сталкиваюсь с проблемами.
Использование print(abstract, end='')
не работает должным образом.
И используя этот метод:
#Abstract
abstracts = ''
while workplace_tag.find_all_next('p')[l] != 'h1':
abstract_tag = workplace_tag.find_all_next('p')[l]
abstract = abstract_tag.text.strip().replace('\n', ' ').encode('windows-1252', errors='replace')
l += 1
abstracts += abstract.decode('windows-1252', errors='replace')
print(abstracts)
#writer.writerow([abstract])
Этот код почти работает, однако он делает мой цикл while всегда истинным и поэтому бесконечно печатает одну и ту же первую группу тегов p.
Выводто, что я мог бы получить в настоящее время с моим кодом:
Name
Workplace
Abstract A
Abstract b
Abstract c
Однако мне нужно, чтобы он выглядел так:
Name
Workplace
Abstract A, Abstract b, Abstract c