2014-11-27 4 views
2

다음 코드는 작동하지만 필요한 정보를 추출 할 수 없습니다. 수프를 사용하거나 정규식이 필요합니까?문자열에서 정보 추출

from bs4 import BeautifulSoup 
import urllib2 
mynumber='1234567890' 
url="http://www.nccptrai.gov.in/nccpregistry/saveSearchSub.misc?phoneno="+mynumber 
page=urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 

table = soup.findAll("table")[1] 
myl=[item.text.strip() for item in table.find_all('td')] 
import re 
re.findall(r'is:\s*[^,]*' , myl[1]) 

예상되는 출력은 첫 번째 슬라이스의 첫 번째 문자열에 언급 된 4 개의 매개 변수입니다.

['2014-08-07 15:50:00', 'Andhra Pradesh', 'Unitech', '0'] 

... 문자열이 반환

이 같은 모양 (날짜를 참고는 YMD로 변경)

[u'is:\n 31-10-2009 01:11\n\n\nService Area : \n Mumbai\n\n\nService Provider :\n Idea\n\n\n\n\n\nYour Preference is :0'] 
+0

반환되는 실제 문자열은 무엇입니까? 'myl [1]'의 내용을 보여줄 수 있습니까? – thefourtheye

답변

1
나는 The number is registered in NCPR 헤더에 의존하는 것

이 (가에 td 태그, 클래스 GridHeader)를 사용하고 find_next_siblings()을 통해 다음 행을 가져옵니다.

import urllib2 
from bs4 import BeautifulSoup 

mynumber = '1234567890' 
url = "http://www.nccptrai.gov.in/nccpregistry/saveSearchSub.misc?phoneno=" + mynumber 

soup = BeautifulSoup(urllib2.urlopen(url)) 

header = soup.find('td', class_='GridHeader') 

result = [] 
for row in header.parent.find_next_siblings('tr'): 
    cells = row.find_all('td') 
    try: 
     result.append(cells[2].get_text(strip=True)) 
    except IndexError: 
     continue 
print result 

인쇄물 :

[u'07-08-2014 15:50', u'Andhra Pradesh', u'Unitech', u'0']