現在、Rio2016でセルビアが果たすマッチ結果を収集するために、Python 3.4とbs4を使用してWebページをクロールしています。したがって、URL hereには、彼女がプレイしたすべての試合結果へのリンクが含まれています(例:this)。pythonとbeautifulsoupを使用してウェブページ内の一部のhrefをクロールできません
<a href="/en/volleyball/women/7168-serbia-italy/post" ng-href="/en/volleyball/women/7168-serbia-italy/post">
<span class="score ng-binding">3 - 0</span>
</a>
しかし、いくつかの試験の後、このhref="/en/volleyball/women/7168-serbia-italy/post"
は表示されません:
それから私は、リンクが、このようなhtmlソースに位置していることがわかりました。次に、次のコードを実行して、URLからすべてのhrefを取得しようとしました。
from bs4 import BeautifulSoup
import requests
Countryr = requests.get('http://rio2016.fivb.com/en/volleyball/women/teams/srb-serbia#wcbody_0_wcgridpadgridpad1_1_wcmenucontent_3_Schedule')
countrySoup = BeautifulSoup(Countryr.text)
for link in countrySoup.find_all('a'):
print(link.get('href'))
次に、奇妙なことが起こりました。 href="/en/volleyball/women/7168-serbia-italy/post"
は出力にまったく含まれていません。
私はこのHREFは、タブページ側でhref="#scheduldedOver"
このURLの一つに位置していることが判明し、それは次のHTMLコードによって制御されます。
<nav class="tabnav">
<a href="#schedulded" ng-class="{selected: chosenStatus == 'Pre' }" ng-click="setStatus('Pre')" ng-href="#schedulded">Scheduled</a>
<a href="#scheduldedLive" ng-class="{selected: chosenStatus == 'Live' }" ng-click="setStatus('Live')" ng-href="#scheduldedLive">Live</a>
<a href="#scheduldedOver" class="selected" ng-class="{selected: chosenStatus == 'Over' }" ng-click="setStatus('Over')" ng-href="#scheduldedOver">Complete</a>
</nav>
は、その後どのように私はBeautifulSoup内部を使用してHREFを取得する必要がありますタブページ?
データが別のURLから来ているので、あなたがソースコードでそのURLを見つけることができません - http://rio2016.fivb.com/en/ api/volley/matches/WOG2016/ja/user/team/3017にあります。そのURLを構築するには、 'data-servicetemammatches ='をソースコード –
で見てください。 htmlにこの情報がないため、 は 'print Countryr.text'で見ることができます。上記のコメントへのリンクは、URLを取得する方法です。 – giaosudau
ありがとう!だから私は正しいURLを取得し、それはプレーンテキストファイルだけであるようだ。それは、ここで行われた美しい意味ですか、私は情報を取得するために他の検索文字列関数を使用する必要がありますか? 私は次のように試してみましたが、 'matchSoup'はそれを分けるクラスがなくても長い文字列であるようです。 ' Matchr = requests.get( 'http://rio2016.fivb.com' + linkUrl) matchSoup = BeautifulSoup Matchr.text) print(matchSoup。テキスト) ' – Benson