나는 APOD 웹 사이트에서 그림을 가져 와서 그 정보를 표시하는 프로그램에서 작업하고 있습니다 (그림은 그림 오른쪽 아래에 있음)). 나는 그림에 대한 정보를 선택합니다 부분 만 구현하는 간단한 클래스를 보여 드리겠습니다 :BeautifulSoup.Tag를 Python을 사용하여 Gtk3의 레이블로 설정하는 방법
import urllib2
import datetime
from BeautifulSoup import BeautifulSoup
from gi.repository import Gtk
class InfoAPOD(Gtk.Window):
"""View info about selected APOD image"""
def __init__(self):
"""Initialize the window"""
Gtk.Window.__init__(self)
self.set_default_size(600, 500)
self.set_position(Gtk.WindowPosition.CENTER)
self.set_border_width(3)
self.grid = Gtk.Grid()
self.add(self.grid)
self.scrolledwindow = Gtk.ScrolledWindow()
self.scrolledwindow.set_vexpand(True)
self.scrolledwindow.set_hexpand(True)
self.grid.add(self.scrolledwindow)
self.label = Gtk.Label()
self.scrolledwindow.add_with_viewport(self.label)
date = datetime.date.today()
page = "ap" + date.strftime('%y%m%d') + ".html"
base_url = "http://apod.nasa.gov/apod/"
apod_url = base_url + page
apod_htm = urllib2.urlopen(apod_url).read()
soup = BeautifulSoup(apod_htm)
tag_b = soup.findAll('b')
tag_p = soup.findAll('p')
apod_dat = date.strftime('%Y %h %d')
apod_tit = tag_b[0].string.strip()
apod_inf = str(tag_p[2])
name = "APOD from " + apod_dat + " - " + apod_tit
self.set_title(name)
text = apod_inf.replace('<p>', '').replace('</p>', '')
self.label.set_markup(text)
self.label.set_justify(Gtk.Justification.LEFT)
self.label.set_line_wrap(True)
def main():
"""Show the window"""
win = InfoAPOD()
win.connect('delete-event', Gtk.main_quit)
win.show_all()
Gtk.main()
return 0
if __name__ == '__main__':
main()
문제는 텍스트 라인이 파괴되고, 당신이 가지고가는 경우 (연속 단락을 형성하지 않는다는 것입니다 APOD 사이트를 보면 내 뜻을 이해할 수 있습니다.) 어쩌면 사진은 수천 단어보다 더 가치가있다 :
요컨대위의 코드와 같이, 나는, 태그를 구문 분석 BeautifulSoup로를 웹 페이지를 가져 오지 urllib2가을 사용하고 하고 있습니다. 그런 다음 원하는 정보 (BeautifulSoup.Tag)를 분리하고 문자열로 변환하여 마크 업을 사용하여 레이블로 설정합니다. 나는 약간의 문서/예제를 여기 저기로 보았습니다 BeautifulSoup하지만 텍스트의 모양을 개선 할 수 없었습니다.
창의 텍스트 모양을 개선하는 방법에 대한 조언을 보내 주시면 감사하겠습니다.
을 확실히 텍스트 프리젠 테이션을 향상시킨다. 완벽하지는 않지만 다소 효과가 있습니다 (경우에 따라서 만, 항상 그런 것은 아닙니다). 나는 'apod_inf.replace ('
',' ') .replace ('
',' ') .replace ('\ n \ n ',' ') .replace ('\ n ',') .replace ('설명 :', '\ n')'. 감사! – skytux** 나는 BeautifulSoup **와 관련이 있다고 생각했습니다. – skytux