我目前使用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