2013-12-22 50 views
0

問題有關分析的網站: 我的代碼:的Python的urllib,HTML解析

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import sys 
import os 
import urllib2 
import re 
# Parse Web 
from lxml import html 
import requests 
def parse(): 
    try: 

     output = open('proba.xml','w') 
     page = requests.get('http://www.rts.rs/page/tv/sr/broadcast/22/RTS+1.html') 
     tree = html.fromstring(page.text) 

     parse = tree.xpath('//div[@class="ProgramTime"]/text()|//div[@class="ProgramName"]/text()|//a[@class="recnik"]/text()') 

     for line in parse: 
      clean = line.strip() 
      if clean: 
       print clean  
    except: 
     pass 

parse() 

我的問題是我怎麼能寫這樣的結果到文件,當我嘗試用這樣的:

print >> output, line 

我只有6個第一行文件。 有了這個代碼:

output.write(line) 

同樣的事情,所以你可以幫助我解決這個問題。 我想要輸出解析的內容。

回答

0

我在複製問題時遇到了問題。下面是我做的......

import sys 
import os 
import urllib2 
import re 
from lxml import html 
import requests 

def parse(): 
    output = open('proba.xml','w') 
    page = requests.get('http://www.rts.rs/page/tv/sr/broadcast/22/RTS+1.html') 
    tree = html.fromstring(page.text) 
    p = tree.xpath('//div[@class="ProgramTime"]/text()|//div[@class="ProgramName"]/text()|//a[@class="recnik"]/text()') 
    for line in p: 
     clean = line.strip() 
     if clean: 
      output.write(line.encode('utf-8')+'\n') # the \n adds a line break 
    output.close() 
parse() 

我覺得寫文件時,你得到一個Unicode相關的錯誤,而是因爲你把一切都放在一個try塊,讓錯誤默默地傳遞你沒有得到反饋!

嘗試在終端中輸入import this。你會得到Zen of Python。一個格言是「錯誤永遠不應該默默通過。」

+0

Thx for solution it works! – Pivopija

0

嘗試此代替: 用文件( 'proba.xml', 'W')爲f: f.writelines([line.strip(),用於解析線]

到位將這個對於行解析:清潔= *並刪除上面的聲明輸出= *並且不需要output.write再次。對不起,如果我不是更清晰的手機上輸入這個