Я использую ниже код для сохранения HTML-файла с отметкой времени в его названии:заголовка If-Modified-Since не дает 304 кода
import contextlib
import datetime
import urllib2
import lxml.html
import os
import os.path
timestamp=''
filename=''
for dirs, subdirs, files in os.walk("/home/test/Desktop/"):
for f in files:
if "_timestampedfile.html" in f.lower():
timestamp=f.split('_')[0]
filename=f
break
if timestamp is '':
timestamp=datetime.datetime.now()
with contextlib.closing(urllib2.urlopen(urllib2.Request(
"http://www.google.com",
headers={"If-Modified-Since": timestamp}))) as u:
if u.getcode() != 304:
myfile="/home/test/Desktop/"+str(datetime.datetime.now())+"_timestampedfile.html"
file(myfile, "w").write(urllib2.urlopen("http://www.google.com").read())
if os.path.isfile("/home/test/Desktop/"+filename):
os.remove("/home/test/Desktop/"+filename)
html = lxml.html.parse(myfile)
else:
html = lxml.html.parse("/home/test/Desktop/"+timestamp+"_timestampedfile.html")
links=html.xpath("//a/@href")
print u.getcode()
Когда я запускаю этот код каждый раз, когда я получаю код 200 из заголовка If-Modified-since. Где я ошибаюсь? Моя цель здесь - сохранить и использовать html-файл, и если он будет изменен после последнего обращения к нему, файл html должен быть перезаписан.
Теперь я использую datetime.datetime.now(). CTIME (), который дает мне время в этом формате Wed Jul 24 16:16:19 2013, все еще не работает. Есть ли способ получить время в предложенном формате. – user2460869
Это ['ctime' output] также не является правильным. Он должен быть отформатирован точно так же, как «Sat, 29 Oct 1994 19:43:31 GMT». Я обновил свой ответ, чтобы включить некоторый пример кода, который генерирует соответствующее значение. Надеюсь, это поможет! –
Все еще не работает, теперь я даю время в этом формате Wed, 24 Jul 2013 23:37:11 GMT – user2460869