2013-08-11 3 views
2

Так что я пытаюсь проверить, существует ли url, и если это так, я хотел бы написать url в файл с помощью python. Мне также хотелось бы, чтобы каждый URL-адрес был в отдельной строке внутри файла. Вот код, у меня уже есть:Запись текста в txt-файл в python на новых строках?

import urllib2 

СОЗДАТЬ BLANK TXT ФАЙЛ для настольных компьютеров

urlhere = "http://www.google.com" 
print "for url: " + urlhere + ":" 

try: 
    fileHandle = urllib2.urlopen(urlhere) 
    data = fileHandle.read() 
    fileHandle.close() 
    print "It exists" 

Затем, если URL действительно существует, напишите URL на новую строку в текстовом файле

except urllib2.URLError, e: 
    print 'PAGE 404: It Doesnt Exist', e 

Если URL-адрес не существует, ничего не пишите в файл.


+0

Итак ... что был вопрос? –

+0

Я хочу, чтобы иметь возможность вводить любой URL-адрес, чтобы «urlhere», проверить программу, существует или нет, или является страницей 404, а затем писать только URL-адрес, который я пытаюсь установить, в файл txt, который находится на рабочем столе. – lorde

+0

На данный момент у меня есть проверка url на месте, все, что мне нужно сделать, это программа, в которой url записывается в txt-файл. – lorde

ответ

0

так, как вы сформулированный ваш вопрос немного запутанным, но если я правильно понимаю все ваши попытки сделать это испытание, если URL действителен с помощью urllib2 и если он записывает url в файл? Если это правильно, то это должно работать.

import urllib2 
f = open("url_file.txt","a+") 
urlhere = "http://www.google.com" 
print "for url: " + urlhere + ":" 

try: 
    fileHandle = urllib2.urlopen(urlhere) 
    data = fileHandle.read() 
    fileHandle.close() 
    f.write(urlhere + "\n") 
    f.close() 
    print "It exists" 

except urllib2.URLError, e: 
    print 'PAGE 404: It Doesnt Exist', e 

Если вы хотите проверить несколько адресов, но не хотите, чтобы изменить сценарий питона вы можете использовать следующий скрипт, набрав python python_script.py "http://url_here.com". Это стало возможным благодаря использованию модуля sys, где sys.argv [1] равен первому аргументу, переданному python_script.py. В этом примере показан URL-адрес ('http://url_here.com').

import urllib2,sys 
f = open("url_file.txt","a+") 
urlhere = sys.argv[1] 
print "for url: " + urlhere + ":" 

try: 
    fileHandle = urllib2.urlopen(urlhere) 
    data = fileHandle.read() 
    fileHandle.close() 
    f.write(urlhere+ "\n") 
    f.close() 
    print "It exists" 

except urllib2.URLError, e: 
    print 'PAGE 404: It Doesnt Exist', e 

Или, если вы действительно хотите, чтобы сделать вашу работу легко можно использовать следующий сценарий, введя следующую команду в командной строке python python_script http://url1.com,http://url2.com где все URLs вы хотите проверить отделены друг от друга запятыми без пробелов.

import urllib2,sys 
f = open("url_file.txt","a+") 
urlhere_list = sys.argv[1].split(",") 

for urls in urlhere_list: 
    print "for url: " + urls + ":" 
    try: 
     fileHandle = urllib2.urlopen(urls) 
     data = fileHandle.read() 
     fileHandle.close() 
     f.write(urls+ "\n") 

     print "It exists" 

    except urllib2.URLError, e: 
     print 'PAGE 404: It Doesnt Exist', e 
    except: 
     print "invalid url" 
f.close() 

sys.argv[1].split() также может быть заменен списком питона в сценарии, если вы не хотите, чтобы использовать функциональные возможности командной строки. Надеюсь, это будет вам полезно и удачи в вашей программе.

примечания скриптов, использующих входы командной строки были протестированы на Ubuntu Linux, так что если вы используете окно или другую операционную систему, которую я не могу гарантировать, что он будет работать с указаниями, но это должно быть.

+0

Разбито! Большое спасибо! Это действительно помогает! Я ценю дополнительные усилия, которые вы вложили в дно 2! – lorde

+0

Не беспокойтесь! Рад, что я могу помочь вам! Это также дает мне много желаемой практики, поэтому я должен частично поблагодарить вас. – Bryan

0

Как о чем-то вроде этого:

import urllib2 

url = 'http://www.google.com' 
data = '' 

try: 
    data = urllib2.urlopen(url).read() 
except urllib2.URLError, e: 
    data = 'PAGE 404: It Doesnt Exist ' + e 

with open('outfile.txt', 'w') as out_file: 
    out_file.write(data) 
+0

Эй, парень! Закрыть, но это записывает много случайных вещей в файл outfile.txt. Все, что я хочу, это написать URL-адрес, который работал с файлом outfile.txt. И каждый раз, когда я запускаю программу, вместо повторного создания outfile он просто изменяет существующий файл, начиная с следующей строки. – lorde

0

Использование requests:

import requests 

def url_checker(urls): 
    with open('somefile.txt', 'a') as f: 
     for url in urls: 
      r = requests.get(url) 
      if r.status_code == 200: 
       f.write('{0}\n'.format(url)) 

url_checker(['http://www.google.com','http://example.com']) 
Смежные вопросы