如何检查超链接是图像链接还是网络链接。
image_list = []
url = 'http://www.image.jpg/'
if any(x in '.jpg .gif .png .jpeg' for x in url):
image_list.append(url)
else:
r = requests.get(url)
soup = BeautifulSoup(r.content, "html5lib")
for link in soup.find_all('img'):
src = link.get('src')
if src.startswith("https"):
image_list.append(src)
上面的代码用于查找包含图像格式的超链接,但每当我使用不包含" .jpg等的链接时..."它仍然将链接附加到image_list并跳过else语句。
答案 0 :(得分:1)
让我们看看这段代码:
any(x in '.jpg .gif .png .jpeg' for x in url):
检查URL中的任何字母是否在字符串中。来自'p'
的{{1}}位于字符串中,因此您将始终获得真实的结果。
以下是检查网址扩展名的方法:
http
但这不是一个有争议的问题,因为网址的扩展并不能告诉你它是否是一张图片。与常规文件不同,对于URL,扩展名完全无关紧要!您可以使用import posixpath
import urllib.parse
IMAGE_EXTS = { '.png', '.jpg', '.jpeg', '.gif' }
url = 'http://example.com/'
if posixpath.splitext(urllib.parse.urlparse(url).path)[1] in IMAGE_EXTS:
# Has image extension...
网址为您提供PNG图片,也可以使用.html
网址,这实际上是一个HTML网页。您需要检查HTTP回复的Content-Type。