Python-requests:检查URL是否不是HTML网页

5 投票
1 回答
5149 浏览
提问于 2025-04-18 17:50

我有一个爬虫程序,它大概是这样工作的:

#if ".mp3" in baseUrl[0] or ".pdf" in baseUrl[0]:
if baseUrl[0][-4] == "." and ".htm" not in baseUrl[0]:
    raise Exception
html = requests.get(baseUrl[0], timeout=3).text

这个程序运行得还不错。不过,如果爬虫遇到像.mp4或.m4a这样的文件,而不是HTML页面,程序就会卡住。在Linux系统中,当我试着运行这个程序时,它只会打印出:

Killed

有没有更有效的方法来处理这些非HTML页面呢?

1 个回答

7

你可以发送一个头请求,然后检查内容类型。如果内容类型是text/html,那就可以继续进行下一步。

r = requests.head(url)
if "text/html" in r.headers["content-type"]:
    html = requests.get(url).text
else:
    print "non html page"

如果你只想发送一次请求的话,

r = requests.get(url)
if "text/html" in r.headers["content-type"]:    
    html = r.text
else:
    print "non html page"

撰写回答