โค๊ดสำหรับดึงข้อมูลจากเว็บไซต์ และประมวลผลด้วย BeautifulSOUP

15 Oct

บันทึกเอาไว้กันลืม จะได้ไม่ต้องมาเริ่มใหม่กันบ่อยๆ อีก

เป็นการโหลดหน้าเว็บเพจด้วย urllib และนำมาประมวลผลเอา HTML Tag ออกไปด้วย BeautifulSOUP 4 จากนั้นบันทึกข้อมูลลงไฟล์เพื่อไว้ใช้สำหรับประมวลผลต่อ

เดี๋ยวค่อยพัฒนาต่อกันไปเรื่อยๆ ครับ

from bs4 import BeautifulSoup
from urllib import urlopen
from urlparse import urlparse

def getWeb(url):
    html_doc = urlopen(url).read()
    soup = BeautifulSoup(html_doc, 'html.parser')
    text = soup.body.get_text()
    text = u''.join(text).encode('utf-8').strip()

    # process for file name
    r = urlparse(url)
    filename = r[1]+'-'+r[4]+'.txt'

    # write result to file
    writeToFile(text, filename)

def writeToFile(str, filename):
    file = open(filename, 'w')
    file.write(str)
    file.close()

if __name__ == '__main__':
    url = 'http://www.samunpri.com/?p=21843'
    getWeb(url)

[update] ตัวนี้น่าจะสมบูรณ์พร้อมนำไปพัฒนาต่อครับ

from bs4 import BeautifulSoup
from urllib import urlopen
from urlparse import urlparse
import os

def getWeb(url):
    html_doc = urlopen(url).read()
    soup = BeautifulSoup(html_doc, 'html.parser')
    text = soup.body.get_text()
    text = u''.join(text).encode('utf-8').strip()

    # process for file name from url
    r = urlparse(url)
    filename = r[1]+'-'+r[4]+'.txt'

    # write result to file
    writeToFile(text, filename)

def writeToFile(str, filename):
    # write data in tmp file
    file = open('tmp.txt', 'w')
    file.write(str)
    file.close()

    removeEmptyLine(filename)

    # remove tmp file
    os.remove('tmp.txt')

def removeEmptyLine(filename):
    newcontent = []
    file1 = open('tmp.txt', 'r')

    for line in file1:
        if not line.strip():
            continue
        else:
            newcontent.append(line)

    # write data in target file
    filecontent = "".join(newcontent)
    file2 = open(filename, 'w')
    file2.write(filecontent)
    file2.close()

if __name__ == '__main__':
    url = 'http://www.samunpri.com/?p=21843'
    getWeb(url)

Social Comments

Loading Disqus Comments ...
Loading Facebook Comments ...