我正在尝试从“用Python自动化乏味的东西”复制项目,您可以在其中使用请求下载每个XKCD漫画。它很短,所以我只在这里输入:
import requests, bs4,os
from pathlib import Path
os.makedirs('./XKCD', exist_ok= True)
path = os.path.abspath('./XKCD')
url = 'http://xkcd.com'
while not url.endswith('#'):
print('downloading page %s...' % url)
xkcdPage = requests.get(url)
XKCDsoup = bs4.BeautifulSoup(xkcdPage.text,features="html.parser")
picTags = XKCDsoup.select('img')
#print (picTags)
for tag in picTags:
if 'title' in tag.attrs:
webComic = requests.get('http:' + tag.attrs['src'])
realTitle = tag.attrs['title'][:200]
fileName = Path(os.path.join(path,realTitle))
# fileName.touch(exist_ok = True)
savedComic = open(os.path.join(path, realTitle),'wb')
for chunk in webComic.iter_content(100000):
savedComic.write(chunk)
savedComic.close()
prevTag = XKCDsoup.select('a[rel="prev"]')[0]
url = 'http://xkcd.com' + prevTag.get('href')
目前,我已经找到了找到图片网址,下载图片并转到上一个漫画页面的代码。我的问题是我的程序读取了大约40幅漫画,然后吐出
savedComic = open(os.path.join(path, realTitle),'wb')
FileNotFoundError: [Errno 2] No such file or directory:
我不确定这是哪里来的。以我的理解,open(filename,wb)在某个路径下打开一个文件,如果该文件不存在,它将创建它。我一直在寻找答案,并且提出了两种可能性:
文件夹的读写权限不正确。这个没有意义,因为我已经可以将30多个文件写入该文件夹
文件路径不正确。同样,这没有任何意义,因为我可以将其他文件写入该文件夹,并且我已经重写了代码以使用abspath而不是相对路径。
我使用了错误的功能来打开文件。如您所见,我检查了其他stackexchange答案,并尝试使用fileName.touch()创建文件(如果该文件不存在)。
老实说,我目前不确定。