我目前使用Python 3.4和bs4抓取網頁,以收集塞爾維亞在Rio2016中發揮的匹配結果。所以url here包含指向她所有比賽結果的鏈接,例如this。無法使用python和beautifulsoup在網頁中抓取某些href
後來我發現,鏈接位於這樣的HTML源代碼:
<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"
從未露面。然後我試圖運行下面的代碼從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"
之一,它是由下面的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來你不會找到源代碼,網址 - http://rio2016.fivb.com/en/ api/volley/matches/WOG2016/en/user/team/3017。爲了構建該網址,請參閱源代碼 –
中的'data-serviceteammatches ='是的。這是因爲你的html沒有這個信息 你可以通過'print Countryr.text'來看到它。上面的評論鏈接是獲取網址的方式。 – giaosudau
非常感謝!所以現在我得到了正確的URL,看起來它只是一個純文本文件。這是否意味着美麗的事情在這裏完成,我需要使用其他搜索字符串函數來獲取信息? 我已經嘗試了以下,似乎'matchSoup'只是一個沒有任何類別分隔的長字符串 'Matchr = requests.get('http://rio2016.fivb.com'+ linkUrl) matchSoup = BeautifulSoup( Matchr.text) print(matchSoup。文字)' – Benson