Python使用BeautifulSoup&;从url获取图像路径和大小;皮尔
我成功创建了一个python脚本,可以从指定的url打印所有图像路径:Python使用BeautifulSoup&;从url获取图像路径和大小;皮尔,python,beautifulsoup,python-imaging-library,Python,Beautifulsoup,Python Imaging Library,我成功创建了一个python脚本,可以从指定的url打印所有图像路径: from requests_html import HTMLSession from urllib.request import urlopen from bs4 import BeautifulSoup import requests url="https://www.example.com/" session = HTMLSession() r = session.get(url) b = r
from requests_html import HTMLSession
from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests
url="https://www.example.com/"
session = HTMLSession()
r = session.get(url)
b = requests.get(url)
soup = BeautifulSoup(b.text, "lxml")
images = soup.find_all('img')
for img in images:
if img.has_attr('src') :
print(img['src'])
我现在想做的是使用PIL打印图像大小以及打印的url。我尝试过这个,但它出现了错误:
from requests_html import HTMLSession
from urllib.request import urlopen
from bs4 import BeautifulSoup
from PIL import Image
import requests
url="https://www.example.com/"
session = HTMLSession()
r = session.get(url)
b = requests.get(url)
soup = BeautifulSoup(b.text, "lxml")
images = soup.find_all('img')
for img in images:
if img.has_attr('src') :
## Get image sizes in PIL
imgsize = Image.open(requests.get(img, stream=True).raw)
print(img['src'], imgsize.size)
有什么办法可以让它工作吗?你应该使用
img['src']
而不是img
requests.get(img['src'], ...).raw
上一个代码段的错误是什么?是错误还是什么?始终将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,也不是指向外部门户的链接)进行讨论(不是评论)。还有其他有用的信息。为什么在
请求中使用img
。get()
?您应该使用img['src']
-requests.get(img['src'],…)
我对它进行了测试,它运行正常@章节将imgsize=Image.open(requests.get(img,stream=True.raw)
更改为imgsize=Image.open(requests.get(img['src],stream=True.raw)
。您可能需要将此代码块包装在try-except
块中,以处理格式错误的URL和无法工作的URL。谢谢。是的,这很有效。但我确实在一些图像上遇到了一个错误:PIL.UnidentifiedImageError:无法识别图像文件。有什么办法解决这个问题吗?图像来自CDN,例如。也许这会导致问题?您可以使用print()
检查从服务器获取的内容。也许它会向机器人/脚本/垃圾邮件/黑客发出警告,而不是图像。或者,在发送图像之前,它可能使用热链接保护
并检查标题referer
——这样它只在您访问原始页面时发送图像。但是,当我使用问题顶部的脚本打印所有图像路径时,您可以在请求中设置标题referer
,它们打印得很好。只有当我尝试打印图像大小时,它才会出错。