2017-02-20 4 views
0

나는 매일 웹 사이트에서 나의 학교 성적을 부여 잡는 프로그램을 만들려고 노력하고있다. 그런 다음 값을 저장하고 내 성적에 대한 그래프를 만듭니다. 그러나 페이지를 다 쳤을 때 내가받는 HTML이 inspect 요소와 다른 HTML입니다. http://pastebin.com/7gPY1WgB나의 성적을 웹 스크랩

내가 그래서 당신이에 입력 할 때, 내 성적에 URL (https://ames.usoe-dcs.org/Students/2567)는 개인이기 때문에 이것이 그림 : http://pastebin.com/BakmpqUM

파이썬이 날을 제공하는 동안 : 요소를 검사

from urllib.request import urlopen 
from bs4 import BeautifulSoup 
html = urlopen("https://ames.usoe-dcs.org/Students/2567") 
bsObj = BeautifulSoup(html.read(), 'lxml'); 
print(bsObj) 

나를 준다 브라우저는 나를 여기에 반환 : https://ames.usoe-dcs.org/Login/?DestinationURL=%2FStudents%2F2566

거기에 나를 자동으로 로그인하는 파이썬을 사용하는 방법은 무엇입니까?

+0

사이트에서 브라우저에서 인증을 허용하는 방법을 파악해야합니다. 예를 들어, 사용자 이름/비밀번호로 성공적으로 로그인하면, HTTP 응답은'Set-Cookie' 헤더로 돌아올 것입니다.이 헤더는 모든 후속 HTTP 요청과 함께 전달해야합니다. – ryannjohnson

+0

사이트에서 로그 아웃하지 않으면 사용자 이름과 암호 대신 스크립트로 쿠키를 저장할 수 있습니다. – ryannjohnson

답변

0

의 URL입니다 반드시 개인, 그러나 당신이 로그인 할 때 표시되는 정보를 얻을 수 없습니다 사용자로 상태를 확인 쿠키없이 URL을 요청.

I가 요소 검사를 여는 것이 좋습니다 네트워크 탭을 클릭하고 로그인 한 상태에서 성적이 표시된 페이지를 다시로드하십시오. 그런 다음 첫 번째 요청 (HTML로 응답 한 GET 요청, 코드 200 여야 함)을 마우스 오른쪽 버튼으로 클릭하고 복사 위로 마우스를 이동 한 다음 Copy as cURL command (bash)을 클릭합니다. 그런 다음 this webpage에 붙여넣고 파이썬을 복사하십시오. 브라우저에서 액세스하는 데 사용한 쿠키 및 확인 매개 변수가 포함 된 페이지에 대한 적절한 요청을 제공합니다. 거기에서 학년에 대한 HTML 응답을 구문 분석 할 수 있습니다.

당신은 수신 요청에서 HTML을 구문 분석과 같은 식으로되어 있어야한다

cookies = { 
    ...stuff... 
} 
headers = { 
    ...stuff... 
} 

r = requests.get("https://ames.usoe-dcs.org/Students/2567", headers=headers, cookies=cookies) 
soup = BeautifulSoup(r.text, "lxml") 
grade = soup.find("h1", {"class":"grade"}).contents # Customize to find your grade 
print(grade) 

쿠키와 헤더 사전 파이썬 출력으로 컬에서 왔습니다.

+0

어떻게 파이썬 요청에서 HTML을 얻을 수 있습니까? 나는 요청에 익숙하지 않다 – PinkChicken

+0

내가 가장 이상한 코멘트를 말하면서, 나는 웹 사이트를 사용한 후에 나의 성적의 가치를 어떻게 얻습니까? – PinkChicken

+0

당신은 BeautifulSoup의 기초를 배워야 할 것입니다. 기본적으로 첫 번째 인수는 학년이 포함 된 요소의 태그 이름이며, 그 후에 참조하는 요소를 지정하는 요소 속성 및 값의 사전을 만들 수 있습니다. 마지막에 contents 속성은 요소의 내부 HTML을 취합니다. –