2013-08-11 2 views
0

파이썬 스크립트로 웹 사이트의 특정 헤더를 가져 오려고합니다. 이 작업을 수행 할 수 있다면 실제로 이미지 이름을 가져올 수 있지만 헤더와 같은 간단한 것으로 시작한다고 생각했습니다. 헤더 이름을 가져 와서 CSV 파일에 날짜를 저장할 수 있지만 헤더 이름이 인쇄되지 않습니다. 명확하게하기 위해, 내가 저장할 때마다 날짜가 파일에 저장되지만 헤더 이름은 저장하지 않습니다.파이썬과 아름다운 스프와 함께 CSV 파일에 모든 정보를 쓸 수없는 것 같습니다

http://www.photosbywagner.com/galleryone.html

내가 당겨 해요 섹션은 다음과 같습니다 :

<div id="headcontainer"><h1>Ed Wagner Photo Gallery:</h1></div> 

나는 아니에요 여기

import urllib2 
from bs4 import BeautifulSoup 

import csv 
import time 
import os 

def get_html(): 
    opener = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(), 
    urllib2.HTTPHandler(debuglevel=0),  
    ) 

    opener.add_handler = [ 
     ('User-agent', 
     "Mozilla/4.0 (compatible; MSIE 7.0; " 
     "Windows NT 5.1; .NET CLR 2.0.50727; " 
     ".NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)") 

    ] 

    url = "http://www.photosbywagner.com/galleryone.html" 
    response = opener.open(url) 
    return ''.join(response.readlines()) 

def get_html_sections(html): 
    soup = BeautifulSoup(html) 
    html_section = soup.find('div', 
      attrs={'id': 'headcontainer'}) 
    return html_section 

def parse_section_html(html): 
    selected_html = get_html_sections(html) 
    result = {} 

    # <img /> 
    result['selection'] = selected_html.find('h1').contents[0] 

    return result 

field_order = ['date', 'info'] 

fields = {'date' : 'Date', 
      'info' : 'Info'} 

def write_row(selected_html): 
    file_name = "WrittenNames" + ".csv" 
    if os.access(file_name, os.F_OK): 
     file_mode = 'ab' 
    else: 
     file_mode = 'wb' 

    csv_writer = csv.DictWriter(
     open(file_name, file_mode), 
     fieldnames=field_order, 
     extrasaction='ignore', 
    ) 

    if file_mode == 'wb': 
     csv_writer.writerow(fields) 
    csv_writer.writerow(selected_html) 


if __name__ == '__main__': 
    html = get_html() 
    row_to_write = parse_section_html(html) 
    row_to_write['date'] = time.strftime("%Y-%m-%d %H:%M") 
    write_row(row_to_write) 
    print row_to_write 

는 웹 페이지입니다 : 여기

내 파이썬 스크립트입니다 다른 모든 것들이 체크 아웃 된 것처럼 보이기 때문에 내가 여기에서 놓친 것이 확실하다 - 올바른 inf를 가져온다. o 화면에 인쇄하면 CSV에 저장되지 않습니다.

감사합니다. parse_section_html에서

답변

2

,해야 :

result['selection'] = selected_html.find('h1').contents[0] 

수 :

result['info'] = selected_html.find('h1').contents[0] 

이 필드 정의와 일치하는?

+0

OMG .... 나는 그것을 놓쳤다는 것을 믿을 수 없다. 나는 너무 오랫동안 그것을 꼼짝 않고 바라 보았다. 고맙습니다! – Amaranda

관련 문제