2016-10-05 1 views
1

저는 교육 웹 사이트를 구문 분석해야하는 파싱 프로젝트를 진행하고 있습니다. 이렇게하는 동안 내 코드는 University of Goa 사이트를 구문 분석 할 수 없습니다. 예상대로 반환되지 않습니다. 내 코드 :BeautifulSoup이 (가) Goa University 사이트를 구문 분석 할 수 없습니다.

from bs4 import BeautifulSoup 
import requests 

hdrs = {'User-Agent': 'Mozilla/5.0 (X11 Linux x86_64) AppleWebKit/537.36 (\ 
    KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}  

r = requests.get(url, verify=True, headers=hdrs) 
result = BeautifulSoup(r.content) 
print(result) 

그것은 인쇄 :

대신 원시 HTML의
<html><head><script type="text/javascript"> 
    document.location="https://www.unigoa.ac.in/result_redirect.php"; 
</script> 
</head></html> 

트리를 구문 분석. 나는 explicity parser lxmlhtml5lib을 BeautifulSoup에 전달하려고 시도했지만 예상대로 작동하지 않습니다. 친절하게 도와주세요. 미리 감사드립니다.

+0

그건 * 원시 파싱 된 HTML 트리입니다. html 파일에 저장하고 브라우저에서 열어보십시오 ... (그냥 무엇을하는지 이해하기 위해) – zvone

답변

1

당신은 리디렉션 URL을 다음 세션을 생성 구문 분석하고 사용할 필요가 :

with requests.Session() as s: 
    s.headers.update(hdrs) 
    r = s.get("https://www.unigoa.ac.in") 
    result = BeautifulSoup(r.content) 
    redirect = result.find("script").text.split("=")[1].strip('";\r\n') 
    r2 = s.get(redirect) 
    print(r2.text) 

r2.text는 당신에게 당신이 홈 페이지에 표시되는 HTML을 제공 할 것입니다.

+0

당신의 대답을 편집 한 것 같습니다. BTW, 이전 대답은'r2.text' 대신'r2.content'를 사용하여 제 문제를 해결했습니다. 빠른 응답을 주셔서 대단히 감사합니다 ... :) –

+1

@OmPrakash, 걱정하지 마세요, 방금 .text로 변경했습니다. python3에서 제대로 형식화 된 텍스트를 볼 수 있으며, .content를 사용하면 단일 바이트 문자열이 표시됩니다. –

+1

오, 알았어. 나는 .text와 .content 사이의 차이점에 대해 전혀 몰랐다. 다시 감사합니다. –

관련 문제