我目前正在使用Python 3.4和bs4爬取网页,以收集塞尔维亚在Rio2016中参加的比赛结果。因此,这个链接包含了她所打过的所有比赛结果的链接,例如 这个。
接下来,我发现这个链接是像这样在HTML源代码中定位的:
然后发生了一件奇怪的事情。输出结果中完全没有
我发现这个href位于该网址的一个选项卡页面
那么,在一个选项卡页内如何使用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"
从未出现。然后我尝试运行以下代码以从网址获取所有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呢?
print Countryr.text
来查看它。上面评论中的链接是获取URL的方法。 - giaosudaumatchSoup
只是一个没有任何类别分隔符的长字符串: `Matchr = requests.get('http://rio2016.fivb.com' + linkUrl) matchSoup = BeautifulSoup(Matchr.text)print(matchSoup.text)` - BensonBeautifulsoup
,我建议您使用yaml或json模块。 - akash karothiya