Обрабатывать тег o: p в BeautifulSoup - PullRequest
0 голосов
/ 09 января 2020

Я извлекал некоторую информацию о болезнях из: http://people.dbmi.columbia.edu/~friedma/Projects/DiseaseSymptomKB/index.html

, но данные содержались внутри тега, с которым я не знаю, как обращаться.

Один из способов, который я нашел, - использование функции find_all, но есть ли способ сделать это как tr.td.span. [O: p или что-то еще] ??


<td width="584" nowrap="" valign="top" style="width:438.0pt;padding:0in 5.4pt 0in 5.4pt;
  height:12.75pt">
  <p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;">UMLS:C0008031_pain
  chest
<o:p>&nsp</o:p>
</span>
</p>
  </td>

1 Ответ

1 голос
/ 09 января 2020
import pandas as pd

df = pd.read_html(
    "http://people.dbmi.columbia.edu/~friedma/Projects/DiseaseSymptomKB/index.html")[0]

df.to_csv("out.csv", index=False, header=False)

Вывод: просмотр в режиме онлайн

на тот случай, если вам нужен полный стол.

, но по вашему требованию.

Использование :

import pandas as pd

df = pd.read_html(
    "http://people.dbmi.columbia.edu/~friedma/Projects/DiseaseSymptomKB/index.html")[0]

print(df[2][1:].values.tolist())

Для bs4

используйте

import requests
from bs4 import BeautifulSoup

r = requests.get(
    "http://people.dbmi.columbia.edu/~friedma/Projects/DiseaseSymptomKB/index.html")


soup = BeautifulSoup(r.text, 'html.parser')

for item in soup.findAll("p", {'class': 'MsoNormal'}):
    item = item.get_text(strip=True)
    if item.startswith("UMLS"):
        print(item)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...