2017-02-23 7 views
0

현재 10 개의 URL로 된 .txt 파일에서 원시 데이터를 추출하고 각 행 (URL)의 원시 데이터를 .txt 파일에 저장하려고합니다. 그런 다음 파이썬을 사용하여 처리 된 데이터 (동일한 원본 .txt 파일의 원시 데이터를 html에서 제외)로 프로세스를 반복하십시오.데이터 다운로드 Python으로 URL이 포함 된 .txt 파일에서 다시

import commands 
import os 
import json 

# RAW DATA 
input = open('uri.txt', 'r') 
t_1 = open('command', 'w') 
counter_1 = 0 

for line in input: 
    counter_1 += 1 
if counter_1 < 11: 
    filename = str(counter_1) 
    print str(line) 
filename= str(count) 
command ='curl ' + '"' + str(line).rstrip('\n') + '"'+ '> ./rawData/' + filename 

output_1 = commands.getoutput(command) 
input.close() 

# PROCESSED DATA 
counter_2 = 0 
input = open('uri.txt','r') 
t_2 = open('command','w') 
for line in input: 
    counter_2 += 1 
    if counter_2 <11: 
     filename = str(counter_2) + '-processed' 
     command = 'lynx -dump -force_html ' + '"'+ str(line).rstrip('\n') + '"'+'> ./processedData/' + filename 
    print command 
output_2 = commands.getoutput(command) 
input.close() 

하나의 스크립트로이 모든 작업을 시도하고 있습니다. 누구든지 내 코드를 수정하여 실행할 수 있습니까? .txt 파일의 각 종류 라인마다 코드를 한 번씩 반복해야합니다. 예를 들어 내 .txt 파일의 모든 URL 행에 대해 원시 & 개의 처리 된 .txt 파일이 하나 있어야합니다.

답변

0

코드를 기능으로 분리하십시오. 현재이 코드는 읽고 디버그하기가 어렵습니다. get_raw()이라는 함수와 get_processed()이라는 함수를 만듭니다. 그런 다음 주 루프에 대해 수행 할 수 있습니다.

for line in file: 
    get_raw(line) 
    get_processed(line) 

또는 이와 유사한 것입니다. 또한 counter<11과 같은 '마법의 숫자'사용을 피해야합니다. 왜 11인데? 파일의 줄 수입니까? 그럴 경우 len()으로 줄 수를 얻을 수 있습니다.

+0

파일에 10 개의 행이 있습니다. 1, 2, ... 10에서부터 계산을 시작할 것이라고 생각했습니다. 나는 10을 넣으려고했다. – BCarey

+0

내 요점은, 당신이 값을 하드 코딩하면, 다른 수의 줄로 파일을 처리 할 수 ​​없다는 것이다. 얼마나 많은 줄이 있는지보고 반복의 수로 사용해야합니다. –

+0

하나의 문서에서 한 번만 수행하면됩니다. 몇 줄이 있는지 알고 있습니다. 나는 네가 어디에서 왔는지 이해한다. – BCarey