Python 解析HTML,写入文件

Python 解析HTML,写入文件,python,html,parsing,xpath,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',

我对用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()
#/usr/bin/python
#-*-编码:utf-8-*-
从lxml导入html
导入请求
导入urllib2
导入系统
进口稀土
导入时间
导入URL库
导入日期时间
def get_web():
尝试:
input_sat=open('rtc.xml','w')
godina=datetime.date.today().strftime(“%Y”)
印花戈迪纳
mjesec=datetime.date.today().strftime(“%m”)
打印mjesec
对于范围(32)内的x:
如果x<1:
x=x+1
var=x
url='1〕http://www.rts.rs/page/tv/sr/broadcast/20/RTS+1.html?月={}年={}日={}&type=0“。格式(mjesec、godina、var)
page=请求.get(url)
tree=html.fromstring(page.text)
a=tree.xpath('//div[@id=“center”]/h1/text()')#
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())
对于拉链中的线(a、b、c、e):
var=行[0]
打印>>输入,行+'\n'
除:
通过
get_web()
该脚本工作正常,可以从URL获取标记,但如何将它们写入文件进行处理? 当我使用
for
循环运行代码时,它不起作用。我不知道问题出在哪里


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

据我所知,您的
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

这是你的全部密码吗?我试着运行它,但得到了
NameError:global name“logging”没有定义。。。你只需要打开文件,写下你想要的,然后关闭。我现在重写了我的代码,问题是url中sercont标记的FOR循环,它不会写入文件。是的,但还有3个标记要解析,这只从循环中输出一个。@Fox\u 01:在第一个循环之后,你有一条指令
如果x<1
只允许一次迭代,在第二个循环中,您使用一个
zip()
函数,该函数的迭代次数等于所有四个列表的最小长度,并且
a
变量只有一个元素,因此循环执行一次。看看它,因为这与如何写入文件无关。