如何从Beautiful Soup获取URL?

时间:2016-05-02 17:37:01

标签: javascript python html beautifulsoup html-parsing

我是Python的新手,试图编写一个爬行程序;我想使用Beautiful Soup从BBC新闻中抓取一些数据。

但是当我使用Firebug检查元素时,我发现此页面中的HTML没有URL链接。

LISTAGG

<li class=""> <a class="navigation-wide-list__link navigation-arrow--open" data-panel-id="js-navigation-panel-World" href="/news/world"> <span>World</span> </a> 中,它不会显示真实的网址链接。如果我想抓取此网页中的所有链接,该怎么办?这是因为该网站使用的是Javascript吗?

2 个答案:

答案 0 :(得分:5)

您需要根据基本/当前网址生成绝对网址,并且相对来自href值。建议的方法是使用urlparse.urljoin()

from urlparse import urljoin  # on Python 3: from urllib.parse import urljoin

absolute_url = urljoin(url, href)

答案 1 :(得分:1)

回答你的最后一个小问题:

href /news/world的价值并不奇怪。那是相对引用,它在URI syntax RFC的内容中的某处指定。 Javascript不需要处理它们,自远古以来它们一直受到浏览器的支持,链接到相对于当前文档或相对于主机的文档。