[Çözüldü] Python Web sayfasından bilgi alma

Başlatan fghty, 22 Ocak 2014 - 01:16:57

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

fghty

<di>...</div> tagı arasında bulunan bilgileri almaya çalışıyorum ama her defasında kod hata veriyor. Bilgiyi almak için kullandığım kod.

scriptal.py

# -*- coding: utf-8 -*-
from sys import version_info
if version_info[0] == 2 and version_info[1] >= 2:
    from HTMLParser import HTMLParser
elif version_info[0] == 3:
    from html.parser import HTMLParser
else:
    from sys import exit
    print("Python yorumlayıcınız bu programı kullanamaz!")
    exit(1)


class ScriptAl(HTMLParser):

    def reset(self):
        self.scriptler = []
        self.script_ici = False
        HTMLParser.reset(self)

    def handle_starttag(self,tag):
        if tag == "script":
            self.script_ici = True

    def handle_endtag(self,tag):
        if tag == "script" and self.script_ici:
            self.script_ici = False

    def handle_data(self,data):
        if self.script_ici:
            self.scriptler.append(data)


Bilgial.py

from scriptal import ScriptAl
import urllib

parser = ScriptAl()
soket = urllib.urlopen("http://forum.ubuntu-tr.net")
parser.feed(soket.read())
soket.close()

dosya = open("yazi.txt","w")
for script in parser.scriptler:
    dosya.write("\n")
    dosya.write(script)
    dosya.write("\n\n")
dosya.close()


Hatayı starttag bölümünde veriyor. o bölüm anahtar ve değeri olduğunda (<div class="deneme">...</div>) sorunsuz bilgileri alıyor. Ama bana sadece anahtar ve değeri olmayan div tagındaki bilgiler gerekiyor. Bu sorunu nasıl halledebilirim? Bilgisi olanlar yardımcı olabilir mi?

def handle_starttag(self,tag,ozellikler):

        if tag == "div":
            for anahtar,deger in ozellikler:
                if anahtar == "class" and deger == "deneme":
                    self.script_ici = True


Not: Kodları buradan aldım: http://ysar.net/python/web-sayfalarindan-veri-okumak.html

sem

Bu iş için bir kütüphane ve forumda örnek uygulaması vardı. O şekilde de denenebilir;  BeautifulSoup kütüphanesi örnek uygulama;

http://forum.ubuntu-tr.net/index.php?topic=37984.0
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

fghty

Hem bilgisayar hemde telefonda da kulanmak için HTMLParser modülünü kullanmıştım. Sorunu buldum statrtagdaki ozellikleri siliyordum hata ondan kaynaklanıyormuş. Şuan sorunsuz çalışıyor.

def handle_starttag(self,tag,ozellikler):
        if tag == "script":
            self.script_ici = True