道歉,如果有重复,我搜索但无法找到答案。 我正在编写一个刮刀来抓取我的网络服务器提供的默认目录索引页面。 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
来构建像
sys.argv[1]
还是有更好的方法来获得这个吗?
编辑::当前输出
print sys.argv[1] + link.get('href')
预期产出:
Mysong1.mp3
Mysong2.ogg
答案 0 :(得分:1)
是的,您唯一的选择是添加基本网址。但不要这样添加:
print sys.argv[1] + link.get('href')
使用此:
from urlparse import urljoin
urljoin('http://something.com/random/abc.html', '../../music/MySong.mp3')
在您的方法中,可能无法识别相对路径。处理完毕,urljoin
处理它。