我是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吗?
答案 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不需要处理它们,自远古以来它们一直受到浏览器的支持,链接到相对于当前文档或相对于主机的文档。