相同功能处理不同类型的数据

时间:2019-11-09 17:45:35

标签: python-3.x beautifulsoup urllib

我可能已经花了很长时间,但是我很难理解为什么我收到FileNotFoundError:[Errno 2]没有这样的文件或目录:当我唯一能看到的是链接时。 使用美丽的汤

目标: 下载图像并将其放置在其他文件夹中,该文件夹可以正常工作,但某些.jpg文件除外。 我尝试了不同类型的路径并剥离了文件名,但这是同样的问题。

测试图像:

http://img2.rtve.es/v/5437650?w=1600&preview=1573157283042.jpg#不起作用

http://img2.rtve.es/v/5437764?w=1600&preview=1573172584190.jpg #Works完美

功能如下:

dbopen
set dataRS=server.createobject("ADODB.recordset")
set dataRS=conn.execute("select email,password,firstname,lastname from Test.dbo.Users")

i=0

dim myDATA()
while not dataRS.EOF

ReDim Preserve myDATA(8,i)

myDATA(0,i) = dataRS("email")

myDATA(1,i) = dataRS("password")

myDATA(2,i) = dataRS("firstname")

i=i+1

dataRS.MoveNext
wend

使用的其他功能:

def get_thumbnail():
'''
Download image and place in the images folder
'''
soup = BeautifulSoup(r.text, 'html.parser')

# Get thumbnail  image
for  preview in soup.findAll(itemprop="image"): 
  preview_thumb = preview['src'].split('//')[1]    

# Download image 
url = 'http://' + str(preview_thumb).strip()
path_root = Path(__file__).resolve().parents[1] 
img_dir = str(path_root) + '\\static\\images\\'


urllib.request.urlretrieve(url, img_dir + show_id() + '_' + get_title().strip()+ '.jpg')

我能解决的唯一问题是必须为第一个图像找到images文件夹,但第二个图像完美。

这是我不断收到的错误,它似乎在request.py处中断 enter image description here

感谢您的任何输入。

1 个答案:

答案 0 :(得分:1)

图像文件名中的“特殊字符”很可能会抛出urlretrieve()(和其中使用的open()):

>>> from urllib import urlretrieve  # Python 3: from urllib.request import urlretrieve
>>> url = "https://i.stack.imgur.com/1RUYX.png"

>>> urlretrieve(url, "test.png")  # works
('test.png', <httplib.HTTPMessage instance at 0x10b284a28>)

>>> urlretrieve(url, "/tmp/test 07/11/2019.png") # does not work
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 98, in urlretrieve
    return opener.retrieve(url, filename, reporthook, data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 249, in retrieve
    tfp = open(filename, 'wb')
IOError: [Errno 2] No such file or directory: '/tmp/test 07/11/2019.png'

换句话说,用作文件名的图像标题必须正确预格式化,然后再用作保存文件名。我只是“散弹”他们,以免出现任何问题。一种方法是简单地使用slugify module

import os
from slugify import slugify

image_filename = slugify(show_id() + '_' + get_title().strip()) + '.jpg'
image_path = os.path.join(img_dir, image_filename)
urllib.request.urlretrieve(url, image_path)

例如,这就是对test 07/11/2019映像名称的处理:

>>> slugify("test 07/11/2019")
'test-07-11-2019'

另请参阅: