Уже 5 часов в питоне, пробую написать некоторые автоматизации, которые помогают в работе.
Код работал исправно, пока я не решил сделать его более гибким. Т.е. он сохраняет исходный код урла в файл. Всё круто.
В urls.txt - просто список урлов, каждый с новой строки.
Но, как только я захотел, чтобы он сохранял не в корень, а в {Domain}/{Date}/file.html - начались проблемы. По отдельности вроде работает и папки создает и файл кладет, но всё вместе - отказывается работать. Т.е. папка может быть уже создана (после взятия 1 url, а проверка на существование папки через try - раздувает код и всё равно не работает, уверен есть какой-то более явный способ).
Так же хотелось бы мнение специалистов - с for у меня 100% говнокод, который можно сделать лучше, т.е. чтобы он брал строку с удалением (но у меня в голове получается еще больший говнокод с получением line - удалением line и т.д.).
import requests import re import linecache import datetime import os from urllib.request import urlopen from bs4 import BeautifulSoup urls = open ('urls.txt') date = str(datetime.datetime.now().date().strftime('%d.%m.%Y')) numstr = 1 for url in urls.readlines(): url = linecache.getline('urls.txt', numstr).rstrip() page = urlopen(url) source = BeautifulSoup(page, "html.parser" ).encode('utf-8') domain = re.match(r'(?i)(?=http:\/\/|https:\/\/|ftp:\/\/)?([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4})', url) filename = re.sub(r'(?i)(http:\/\/|https:\/\/|ftp:\/\/)?([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4})', '', url) filename = re.sub(r'\/', '-', filename) os.mkdir(domain.group(0)) os.mkdir(date) file = open (filename + 'backup.html', 'wb') file.write (source) file.close numstr = numstr + 1
Проблема:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-2-4fb49e3a7d5b> in <module>() 18 filename = re.sub(r'(?i)(http:\/\/|https:\/\/|ftp:\/\/)?([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4})', '', url) 19 filename = re.sub(r'\/', '-', filename) ---> 20 os.mkdir(domain.group(0)) 21 os.mkdir(date) 22 # os.chdir(str(datetime.datetime.now().date().strftime('%d.%m.%Y')) AttributeError: 'NoneType' object has no attribute 'group'
Ставит в тупик то, что print (domain.group(0)) - выдает корректное имя. И отдельно этот код работает и создает папку. Что же не так в итоговом файле?
