尝试使用BeautifulSoup从网页中获取绝对链接

Kev*_*vin 4 python beautifulsoup

我正在使用BeautifulSoup阅读网页的内容.我想要的只是抓住<a href>那个开始http://.我知道在beautifulsoup你可以搜索属性.我想我只是遇到语法问题.我想它会有类似的东西.

page = urllib2.urlopen("http://www.linkpages.com")
soup = BeautifulSoup(page)
for link in soup.findAll('a'):
    if link['href'].startswith('http://'):
        print links 
Run Code Online (Sandbox Code Playgroud)

但那回归:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "C:\Python26\lib\BeautifulSoup.py", line 598, in __getitem__
    return self._getAttrMap()[key]
KeyError: 'href'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?提前致谢.

编辑 这不适用于任何网站.该脚本从用户获取URL.所以内部链接目标将是一个问题,这也是我只想<'a'>从页面中获取的原因.如果我转向它www.reddit.com,它解析开始的链接,它得到这个:

<a href="http://www.reddit.com/top/">top</a>
<a href="http://www.reddit.com/saved/">saved</a>
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "C:\Python26\lib\BeautifulSoup.py", line 598, in __getitem__
    return self._getAttrMap()[key]
KeyError: 'href'
Run Code Online (Sandbox Code Playgroud)

ale*_*asi 6

from BeautifulSoup import BeautifulSoup
import re
import urllib2

page = urllib2.urlopen("http://www.linkpages.com")
soup = BeautifulSoup(page)
for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
    print link
Run Code Online (Sandbox Code Playgroud)