2013-08-11 4 views
2

그래서 나는 URL이 존재 하는지를 확인하려고 노력하고있다. 그리고 나는 그것이 파이썬을 사용하는 파일에 URL을 쓰고 싶으면하고 싶다. 또한 각 URL이 파일 내에서 고유 한 줄에 있어야합니다. 여기에 내가 이미 가지고있는 코드 :새로운 줄에 파이썬으로 txt 파일에 텍스트 쓰기?

import urllib2 

는 텍스트 파일에 새 줄에 URL을 쓰기 URL이 존재하는 경우 빈 TXT는,

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

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

그런 다음 바탕 화면을 파일 만들기

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

URL이 없으면 파일에 아무 것도 쓰지 마십시오.


+0

그래서 ... 문제는 다시 무엇 이었습니까? –

+0

나는 'urlhere'에 URL을 입력 할 수 있고, 프로그램이 존재하는지 또는 404 페이지인지 테스트 한 다음 바탕 화면에있는 txt 파일에 존재하는 URL 만 쓸 수 있기를 원합니다. – lorde

+0

현재로서는, 나는 그 자리에있는 URL 체크를 가지고 있으며, 내가해야 할 일은 url이 txt 파일에 쓰여지는 것입니다. – lorde

답변

0

방법 파일에 URL을 쓰는 경우? 올바른 경우 다음 작동합니다. 여러 URL을 테스트 할 수 있지만 python python_script.py "http://url_here.com"을 입력하여 다음 스크립트를 사용할 수있는 파이썬 스크립트를 편집하지 않으려면

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 

. 이는 sys.argv [1]이 python_script.py에 전달 된 첫 번째 인수와 동일한 sys 모듈을 사용하여 가능합니다. 이 예에서 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 

또는 당신은 정말 쉽게 테스트에 당신이 원하는 모든 URL은 공백없이 쉼표로 구분 명령 줄 python python_script http://url1.com,http://url2.com에 다음을 입력하여 다음 스크립트를 사용할 수있는 작업을 만들고 싶어합니다. 명령 줄 기능을 사용하지 않으려면

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()

는 스크립트 내에서 파이썬 목록으로 대체 할 수있다. 희망이 당신에게 당신의 프로그램과 행운을 빌어 요. 명령 줄 입력을 사용하여

참고 스크립트는 우분투 리눅스에서 테스트했다, 그래서 당신은 창 또는 다른 운영 체제를 사용하는 경우 나는의 지시와 함께 작동하지만이해야 보장 할 수 없습니다.

+0

박살 냈다! 고마워요! 이것은 정말로 도움이됩니다! 당신이 바닥 2에 들어간 여분의 노력에 감사드립니다 !! – lorde

+0

걱정할 필요가 없습니다! 다행 이네. 너를 도울 수있어! 그것은 또한 나에게 많이 바람직한 연습을 제공하므로 부분적으로 당신에게 감사해야합니다. – Bryan

0

어떻게 이런 일에 대해 : 당신은 귀하의 질문에 조금 혼란하지만 제대로 이해하는 경우 URL이 urllib2가를 사용하여 유효한 경우 당신의 일을하려고 모든 테스트입니다 말로

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 많은 무작위 물건을 씁니다. 나가 원하는 모두는 outfile.txt에 일한 URL를 쓰는 것이다. 그리고 프로그램을 실행할 때마다 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'])