python beautifulsoup解析时没有链接' a'标签和href

时间:2016-06-04 12:36:17

标签: python html beautifulsoup

道歉,如果有重复,我搜索但无法找到答案。 我正在编写一个刮刀来抓取我的网络服务器提供的默认目录索引页面。 html看起来像这样

<html>
<head><title>Index of /Mysongs</title></head>
<body bgcolor="white">
<h1>Index of /Mysongs</h1><hr><pre><a href="../">../</a>
<a href="Mysong1.mkv">Mysong1.mp3</a>                        10-May-2016 07:24           183019
<a href="Mysong2.mkv">Mysong2.ogg</a>                        10-May-2016 07:27           177205

href链接看起来只是一个文字,而不是网址(<a href="Mysong2.mkv">),但在指向文字时,它会在浏览器的状态栏中显示该链接({ {1}})

我尝试使用beautifulsoup提取网址,就像这样

http://127.0.0.1/Mysongs/Mysong2.ogg

我无法获得#!/usr/bin/python import httplib2 import sys from BeautifulSoup import BeautifulSoup, SoupStrainer http = httplib2.Http() status, response = http.request(sys.argv[1]) for link in BeautifulSoup(response, parseOnlyThese=SoupStrainer('a')): print link.get('href') 之类的链接,但只能获得http://127.0.0.1/Mysongs/Mysong2.ogg

我是否应该使用<a href="Mysong1.mkv">Mysong1.mp3</a> 10-May-2016 07:24来构建像

这样的href链接
sys.argv[1]

还是有更好的方法来获得这个吗?

编辑::当前输出

print sys.argv[1] + link.get('href')

预期产出:

Mysong1.mp3
Mysong2.ogg

1 个答案:

答案 0 :(得分:1)

是的,您唯一的选择是添加基本网址。但不要这样添加:

print sys.argv[1] + link.get('href')

使用此:

from urlparse import urljoin
urljoin('http://something.com/random/abc.html', '../../music/MySong.mp3')

在您的方法中,可能无法识别相对路径。处理完毕,urljoin处理它。