Как объединить p-теги в одну строку - beautfiulsoup - PullRequest
0 голосов
/ 15 октября 2018
#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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...