Python Web scraping Pubmed Abstract - «Аннотация» объединяется с первым словом (например, «AbstractINTRODUCTION:») - PullRequest
0 голосов
/ 18 мая 2019

Я делаю тезисы на веб-сайте Pubmed.gov, и хотя я могу получить нужный текст, слово «аннотация» объединяется с первым словом аннотации. Вот образец резюме: https://www.ncbi.nlm.nih.gov/pubmed/30470520

Например, первое слово становится «AbstractBACKGROUND:»

Проблема в том, что абстрактным иногда может быть "AbstractBACKGROUND", "AbstractINTRODUCTION" или другое слово (я не буду знать). Тем не менее, у него всегда будет «Абстракт» в начале. В противном случае я просто запустил бы команду замены и вынул абстрактную часть.

Я бы предпочел либо убрать слово «Аннотация», либо разрыв между строкой «Аннотация» и первым словом, например, так:

Аннотация ВВЕДЕНИЕ:

Я знаю, что использование команды замены не будет работать, но я хотел продемонстрировать, что как n00b я, по крайней мере, попытался. Я ценю любую помощь, чтобы сделать эту работу! Вот мой код ниже:

import requests
import re
from bs4 import BeautifulSoup
from urllib.request import urlopen

listofa_urls = ['https://www.ncbi.nlm.nih.gov/pubmed/30470520', 
'https://www.ncbi.nlm.nih.gov/pubmed/31063262']

for l in listofa_urls:
   response = requests.get(l)
   soup = BeautifulSoup(response.content, 'html.parser')
   x = soup.find(class_='abstr').get_text()
   x = x.replace('abstract','abstract: ')
   print(x)

1 Ответ

1 голос
/ 18 мая 2019

Использование re.sub

Пример:

import requests
import re
from bs4 import BeautifulSoup
from urllib.request import urlopen

listofa_urls = ['https://www.ncbi.nlm.nih.gov/pubmed/30470520', 
'https://www.ncbi.nlm.nih.gov/pubmed/31063262']

for l in listofa_urls:
   response = requests.get(l)
   soup = BeautifulSoup(response.content, 'html.parser')
   x = soup.find(class_='abstr').get_text()
   print(x.encode("utf-8"))
   x = re.sub(r"\babstract(.*?)", r"\1", x, flags=re.I)
   print(x.encode("utf-8"))

Выход:

b'AbstractBACKGROUND: The amount of insulin needed to...
b'BACKGROUND: The amount of insulin needed to ....

b'AbstractCirrhosis is morbid and increasingly prevalent - ...
b'Cirrhosis is morbid and increasingly prevalent -...
...