2012-11-08 4 views
0

다음 사이트에서 정보를 얻으려고합니다 : http://www.ebi.ac.uk/intact/, Q9SUE8을 검색하십시오. URLLIB 사용 나는 페이지의 HTML을 얻을 :html 표에서 값을 가져 오는 방법은 무엇입니까?

import urllib2 
import urllib 
url = 'http://www.ebi.ac.uk/intact/' 
values = {'queryTxt':'Q9SUE8'} 

data = urllib.urlencode(values) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
the_page = response.read() 
print the_page 

그 결과로 다음 표를 제공하는 브라우저에서 Q9SUE8 검색 :

# Molecule 'A' Links 'A' Molecule 'B' Links 'B' some more columns 
-------------------------------------------------------------------------------- 
1 T13J8.10  Q9SUE8  GRF7   Q96300 
        EBI-4459886 

내가 값 Q96300을 추출 할. 나는 다시 HTML의 열 헤더를 찾을 수 있습니다

<tr> 
    <td> 
    <input id="mainPanels:columnSelection:3" type="checkbox" name="mainPanels:columnSelection" checked="checked" value="moleculeB.links" /> 
    <label for="mainPanels:columnSelection:3">&#160;Links 'B'</label> 
    </td> 
</tr> 

내가 HTML에 익숙하지 않아요하지만 난 Q96300는 = "moleculeB.links"값에서 오는 것 같아요. 그 가치를 얻으려면 어떻게해야합니까?

+0

내 머리 위로 조금이라도 지나치게 미안하지만 클래스 나 ID 또는 색인 정보가있는 요소의 가치를 얻으려고합니까? – VoidKing

+0

내가 볼 수있는 한, 입력 ID 만 가지고 있지만 잘 모르겠다. 그래서 나는 결코 자바 스크립트로 작업하지 않았다. –

+0

입력 요소의 ID가 있다면, 그것은 매우 쉽다. 아래에 답변을 게시하겠습니다. – VoidKing

답변

0

자바 스크립트에 대해 걱정할 필요가 없습니다. 세션/숨겨진 입력 문제 일 가능성이 높습니다.

그러나 다음과 같은 코드가 작동합니다

import mechanize 
import re 

b = mechanize.Browser() 

# Visit search page 
url = 'http://www.ebi.ac.uk/intact' 
resp = b.open(url) 
page = resp.read() 

# Fill out and submit form 
b.select_form(name="intactForm") 
b["queryTxt"] = 'Q9SUE8' 
resp = b.submit() 
page = resp.read() 

# Parse Page 
matches = re.findall('<td role="gridcell" class="cellTextCompound"><div class="ui-dt-c"><a href=".*?" target="_blank">(.*?)</a>', page) 

linksB = matches[0] 
print linksB 

출력 : 그것은 (python-mechanize으로 페도라의 repo에서 사용 가능) mechanize 모듈을 필요로

Q96300 

참고.

+0

그는 왜 하나의 값을 읽는 데이 많은 코드가 필요한가요? 실행할 수있는 것에 대한 답을 간소화해야합니다. – VoidKing

관련 문제