2017-05-19 11 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> 

私はこするとスーパー新たなんだし、正常に私が必要な他のすべてを掻き取ってきました私のプロジェクトはちょうどこの邪悪なサイトではない...私はサイトにサインアップしなければならないかもしれないと思う?しかしどちらの方法でも情報がサインインされずに表示されるので、私はSeleniumを使う必要がないと思っていましたが、それを見つけられなくても私は思っていません。

とにかくここまでは、明らかに空リストを返すコードがあります。

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">はJavaScriptによって書き換えられますが、urllib.requestはコールバックを実行する前に応答全体を取得します。つまり、javascriptで生成されたコンテンツは応答に含まれません。したがって、divが空になります:あなたはより良い動的なウェブサイトのこの種のために働くだろうseleniumsplashてみてください

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

。あなたは右の応答を取得した後

ところで、あなたはiddivを選択し、それが具体的になります。応答のための

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

ちょっと感謝!感謝します。私はセレンを必要としないことを望んでいたが、それは良いと思う。私はランチ後に基本的なセレンコードを書いて、私が応答を得ることができるかどうかを見てみましょう。スプラッシュを聞いたことはありません。それも同様に見えるでしょう –

+1

神の母。セレンは簡単でした...なぜ私は尋ねる前にそれを試していないのか分かりません。とにかくアドバイスをありがとう!私はそれを持っています:) –

+0

@StuKruskeクール、キース: –

関連する問題