2017-05-19 6 views
2

나는이 사이트에서 선수 이름 및 프로젝션을 긁어하려고 ... 잠시이 붙어있다 : https://www.fantasysportsco.com/Projections/Sport/MLB/Site/DraftKings/PID/793BS4 스크래핑 숨겨진 내용

이 스크립트는 단지를 통해 이동하여 과거를 통해 루프 것입니다 모든 PID가 범위 내에 있지만 문제는 아닙니다. 가장 큰 문제는 내가 요소를 검사 할 때이 값이이 클래스에 저장됩니다 찾을 수 있습니다 : 내 projectionsView 목록의 5 번째 위치에 있습니다

<div class="salarybox expanded"... 

.

스크래퍼는 projectionsView 클래스를 잘 찾았지만 그 안에 아무것도 찾을 수 없습니다. 고토 내가이 내용이 바로 그 안에 exsist하지 않는 것 같다 사이트의 실제 HTML ..

<div id="salData" class="projectionsView"> 
    <!-- Fill in with Salary Data --> 
</div> 

를 볼 때

나는 긁어 슈퍼 새로 온 사람과 성공적으로 내가 필요한 다른 모든 긁힌 한 내 프로젝트는이 빌어 먹을 사이트가 아니야 ... 내가 그 사이트에 가입해야하기 때문에 그런 것 같아? 그러나 정보가 로그인하지 않고도 볼 수 있으므로 셀렌을 사용할 필요가 없다는 것을 알았습니다. 그리고 내가 찾지 못하더라도 그것을 생각하지 않습니다.

어쨌든 여기에 분명히 빈 목록을 반환하는 코드가 있습니다.

from bs4 import BeautifulSoup as soup 
from urllib.request import urlopen as uReq 
import pandas as pd 
import os 


url = "https://www.fantasysportsco.com/Projections/Sport/MLB/Site/DraftKings/PID/793" 

uClient = uReq(url) 
page_read = uClient.read() 
uClient.close() 

page_soup = soup(page_read, "html.parser") 
salarybox = page_soup.findAll("div",{"class":"projectionsView"}) 
print(salarybox[4].findAll("div",{"class":"salarybox expanded"})) 

모든 아이디어를 매우 높이 평가할 것입니다.

스크립트의 전체 아이디어는 각 페이지에서 각 "salarybox expanded"클래스의 ppText를 찾는 것입니다. 이 요소를 찾는 방법을 알고 싶습니다. 아마도 다른 파서일까요?

답변

1

URL 페이지를 기준으로 <div id="salData" class="projectionsView">은 자바 스크립트로 다시 작성되지만, 콜백을 실행하기 전에 urllib.request이 전체 응답을 받으면 자바 스크립트에서 생성 된 콘텐츠가 응답에 포함되지 않습니다. 따라서 사업부는 비어있을 것입니다 : 당신은 더 나은 동적 웹 사이트에 이런 종류의 작동 seleniumsplash으로 시도

<div id="salData" class="projectionsView"> 
    <!-- Fill in with Salary Data --> 
</div> 

. 당신이 바로 응답을받을 후

BTW, 당신은 id에 의해 div을 선택, 그것은 구체적 것 : 응답에 대한

salarybox = page_soup.find("div",{"id":"salData"}) 
+0

이봐 감사합니다! 고맙습니다. 나는 내가 셀레늄을 가질 필요가 없길 희망했으나 괜찮을 것이라고 생각한다. 점심 식사 후에 기본적인 셀레늄 코드를 적어서 응답받을 수 있는지 알아 보겠습니다. 스플래시 소리 못 들었어. 그것도 들여다 볼 것입니다. –

+1

신의 어머니. 셀레늄은 쉬웠다. .. 내가 묻기 전에 그것을 시험해 보지 않았던 이유가 명확하지 않다. 어쨌든 조언 주셔서 감사합니다! 나는 그것을 얻었다 :) –

+0

@StuKruske 차갑고, CHEERS :) –