将整个html表写入文本fi

2024-05-19 10:52:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从一个站点下载一个表,并将它带到一个表中。我可以在解释器中看到输出,但是当我写文本文件时,它只有一行。如何将整个表写入文本?在

#!/usr/bin/env python
from mechanize import Browser
from bs4 import BeautifulSoup
import urllib2,cookielib
import time

mech = Browser()
mech.set_handle_robots(False)
mech.set_handle_equiv(True)
mech.set_handle_redirect(True)
mech.set_handle_robots(False)
mech.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

url = "http://www.marinetraffic.com/en/ais/index/positions/all/shipid:415660/mmsi:354975000/shipname:ADESSA%20OCEAN%20KING/_:6012a2741fdfd2213679de8a23ab60d3"

page = mech.open(url)
#html = page.read()

DateTime = time.strftime("%Y%m%d-%H%M")
Month = time.strftime ("%mm-%Y")

html = page.read()
soup = BeautifulSoup(html)
table = soup.find("table",attrs={"class":"table table-hover text-left"})


for row in table.findAll('tr')[1:]:
    items = row.text.replace(u"kn","")# remove kn so items line up when unpacking
    time, ais_source, speed_km, lat, lon, course = items.split()[1:7]
    data = items.split()[1:7]
    text_file = open(DateTime + '.txt',"w")
    text_file.write(str(data))
    text_file.close()
    print items

Tags: textfromimportbrowsertimehtmlpagetable
2条回答

每次通过循环时都要打开文件,模式“w”表示写入(即覆盖文件中当前的内容)。我建议您在循环之前打开文件,然后在循环之后关闭它。您也可以在每次通过循环时以append模式打开它。在

with open(DateTime + '.txt',"w") as text_file:
    for row in table.findAll('tr')[1:]:
        items = row.text.replace(u"kn","")# remove kn so items line up when unpacking
        time, ais_source, speed_km, lat, lon, course = items.split()[1:7]
        data = items.split()[1:7]
        text_file.write(str(data))
with open(DateTime + '.txt',"a") as text_file:
    for row in table.findAll('tr')[1:]:
        items = row.text.replace(u"kn","")# remove kn so items line up when unpacking
        time, ais_source, speed_km, lat, lon, course = items.split()[1:7]
        data = items.split()[1:7]
        text_file.write(str(data))
        print items

以追加模式打开文件,否则每次循环都会覆盖文件的内容,从而丢失以前写入的数据。在

相关问题 更多 >

    热门问题