解析HTML,写入文件

时间:2014-01-08 13:12:45

标签: python html parsing xpath

我对使用python解析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循环运行我的代码时,它不起作用。我不知道问题出在哪里。

我重写了我的代码,它不会将页面上的内容输出到文件中。

1 个答案:

答案 0 :(得分:2)

据我了解,您的print()功能不正确。您必须使用处理程序的write()函数,并将文本编码为UTF-8:

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