Я пытаюсь скопировать проект из Automation the Boring Stuff с 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')
В настоящее время у меня есть код, который находит URL-адрес изображения, загружает изображение и переходит на веб-страницу для предыдущего комикса.,Моя проблема в том, что моя программа проходит около 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 () создать файл, если он не существует.
Честно говоря, я не уверен в этомточка.