gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:36 25 4
gpt4 key购买 nike

抱歉,如果有重复,我搜索过但找不到答案。我正在编写一个抓取工具来抓取我的网络服务器提供的默认目录索引页面。 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"> ),但指向文本时,它会在浏览器的状态栏中显示链接 ( http://127.0.0.1/Mysongs/Mysong2.ogg )

我尝试使用 beautifulsoup 提取网址,如下所示

#!/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]构建 href 链接,例如

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

或者有更好的方法来实现这个吗?

编辑::当前输出是

Mysong1.mp3
Mysong2.ogg

预期输出:

http://127.0.0.1/Mysong1.mp3
http://127.0.0.1/Mysong1.0gg

最佳答案

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

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

使用这个:

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

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

关于python beautifulsoup解析 'a'标签和href时没有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37630308/

25 4 0