2014-01-08 2 views
0

python으로 HTML 태그를 구문 분석하는 것에 대한 질문이 있습니다. 내 코드는 다음과 같습니다HTML을 구문 분석하여 파일에 쓰기

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
from lxml import html 
import requests 
import urllib2 
import sys 
import re 
import time 
import urllib 
import datetime 
def get_web(): 

    try: 
     input_sat = open('rtc.xml','w') 
     godina = datetime.date.today().strftime("%Y") 
     print godina 
     mjesec = datetime.date.today().strftime("%m") 
     print mjesec 
     for x in range (32): 
      if x < 1: 
       x = x + 1 
       var = x 

       url = 'http://www.rts.rs/page/tv/sr/broadcast/20/RTS+1.html?month={}&year={}&day={}&type=0'.format(mjesec, godina, var) 

       page = requests.get(url) 
       tree = html.fromstring(page.text) 
       a = tree.xpath('//div[@id="center"]/h1/text()') # datum 
       b = tree.xpath('//div[@class="ProgramTime"]/text()') # time 
       c = tree.xpath('//div[@class="ProgramName"]/text()') 
       e = tree.xpath('//div[@class="ProgramName"]/a[@class="recnik"]/text()') 


       for line in zip(a,b,c,e): 
        var = line[0] 
        print >> input_sat, line+'\n' 




    except: 
     pass 
get_web() 

스크립트는 잘 작동하고 URL에서 태그를 얻을 수 있지만, 어떻게 내가 처리를 위해 파일로 쓸 수? 코드를 for 루프로 실행하면 작동하지 않습니다. 문제가 어디 있는지 모르겠습니다.

코드를 다시 작성했지만 페이지의 내용을 파일로 출력하지 않습니다.

+0

이 당신의 전체 코드입니다 당신은 핸들러의 write() 기능을 사용하고, 또한 UTF-8 텍스트 인코딩해야? 나는 그것을 실행하려고'NameError : global name 'logging'이 정의되지 않았다. – Kevin

+0

파이썬 파일 i/o를 살펴 봅니다. http://www.tutorialspoint.com/python/python_files_io.htm (Google에서 두 번째 히트) ... 파일을 열어 원하는 파일을 쓰고 닫아야합니다. –

+0

지금 내 코드를 다시 작성했습니다. 문제는 url의 sercont 태그에 대한 FOR 루프에 있습니다. 파일에 쓰지 않습니다. –

답변

2

나는 그것을 이해하므로 귀하의 print() 기능이 올바르지 않습니다.

for line in zip(a,b,c,e): 
    var = line[0] 
    input_sat.write(line[0].encode('utf-8') + '\n') 

그것은 산출 :

Programska šema - sreda, 01. jan 2014 
+0

그렇지만 구문 분석을 위해 3 개의 태그가 추가되어 루프에서 하나만 출력됩니다. –

+0

@ Fox_01 : 첫 번째 루프가 끝난 직후에는 하나의 반복 만 허용하는'if x <1' 명령어를 사용하고 두 번째 루프에서는 모든 반복의 길이와 동일한 반복 횟수를 사용하는'zip()'함수를 사용합니다 4 개의리스트를 가지며,'a' 변수는 하나의 요소만을 가지므로 루프는 한 번 실행됩니다. 파일에 쓰는 방법에는 아무런 관련이 없기 때문에 살펴보십시오. – Birei

+0

아픈 시도해보기 –

관련 문제