2013-12-22 131 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再次。对不起,如果我不是更清晰的手机上输入这个