2017-12-23 1 views
1

작은 파이썬 함수를 사용하여 clinicalTrials.gov에서 데이터를 긁어 모으고 있습니다. 각 학습 기록에서 연구가 목표로 삼고있는 조건을 다듬고 싶습니다.clinicalTrials.gov의 데이터 스크랩

conditions = ['Rhinoconjunctivitis', 'Rhinitis', 'Conjunctivitis'. 'Allergy'] 

그러나 각 연구 기록에, 조건의 다른 수있다 : 예를 들어, this 연구 레코드에 대해 나는 다음을 원한다. 그래서 같은

page = requests.get('https://clinicaltrials.gov/ct2/show/study/NCT00550550') 
soup = BeautifulSoup(page.text, 'html.parser') 
studyDesign = soup.find_all(headers='studyInfoColData') 
condition = soup.find(attrs={'class':'data_table'}).find_all('span') 
for each in condition: 
    print(each.text.encode('utf-8').strip()) 

:

b'Condition or disease' 
b'Intervention/treatment' 
b'Phase' 
b'Rhinoconjunctivitis' 
b'Rhinitis' 
b'Conjunctivitis' 
b'Allergy' 
b'Drug: Placebo' 
b'Biological: SCH 697243' 
b'Drug: Loratadine Syrup 1 mg/mL Rescue Treatment' 
b'Drug: Loratadine 10 mg Rescue Treatment' 
b'Drug: Olopatadine 0.1% Rescue Treatment' 
b'Drug: Mometasone furoate 50 mcg Rescue Treatment' 
b'Drug: Albuterol 108 mcg Rescue Treatment' 
b'Drug: Fluticasone 44 mcg Rescue Treatment' 
b'Drug: Prednisone 5 mg Rescue Treatment' 
b'Phase 3' 

가 어떻게 이제 개입/치료 정보없이 조건을 얻을 수 있습니다 나는 데이터를 가져 다음과 같은 스크립트를 작성했습니다?

답변

1

당신은 td에서 클래스 data_table & 추출물 span 요소와 첫 table를 사용할 수 있습니다

import requests 
from bs4 import BeautifulSoup 

page = requests.get('https://clinicaltrials.gov/ct2/show/study/NCT00550550') 
soup = BeautifulSoup(page.text, 'html.parser') 
studyDesign = soup.find("table", {"class" : "data_table"}).find('td') 
conditions = [ t.text.strip() for t in studyDesign.find_all('span') ] 
print(conditions) 

주는 :

[u'Rhinoconjunctivitis', u'Rhinitis', u'Conjunctivitis', u'Allergy'] 
1

아마이 코드가 도움이 될 것입니다.

import requests 
from bs4 import BeautifulSoup 

#url = "https://clinicaltrials.gov/ct2/show/NCT02656888" 
url = "https://clinicaltrials.gov/ct2/show/study/NCT00550550" 

page = requests.get(url) 
soup = BeautifulSoup(page.content, 'html.parser') 
table = soup.find_all("table", class_="data_table") 

tds = [tr.find_all("td") for tr in table] 
conditions = [condition for condition in (tds[0][0].get_text().split("\n")) if condition != ""] 

print(conditions)