2009-04-24 18 views
5

Python'u kullanarak http://utahcritseries.com/RawResults.aspx'daki değerleri okumayı deniyorum. Sayfayı gayet iyi okuyabiliyorum, ancak yılların verilerini görüntülemek için açılan kutunun değerini değiştirmekte zorlanıyorum. Verileri 2002 yılının temeli dışındaki yıllar boyunca nasıl okuyabilirim?Bir asp.net AJAX uygulamasından veri alma Python alma

Sayfa açılan kutu değiştiğinde sayfa bir HTTP Gönderi yapıyor gibi görünüyor. Denetimin adı ct100 $ ContentPlaceHolder1 $ ddlSeries'tir. Urllib.urlencode (postdata) kullanarak bu kontrol için bir değer ayarlamaya çalışıyorum, fakat yanlış bir şey yapmalıyım - sayfada yer alan veriler değişmiyor. Bu Python'da yapılabilir mi?

Mümkünse, Selenyum kullanmamayı tercih ederim.

Ben

import urllib 

postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9} 

src = urllib.urlopen(
    "http://utahcritseries.com/RawResults.aspx", 
    data = urllib.urlencode(postdata) 
).read() 

print src 

(stackoverflow kullanıcı dbr itibaren) böyle kodunu kullanarak Ancak aynı 2002 verileri yukarı çekerek gibi görünüyor ettik. Başlıkları denetlemek için ateş böceği kullanmayı denedim ve çok fazla yabancı ve rastgele görünen veriyi geri gönderildim ve bu değerleri sunucuya da göndermem gerekiyor mu?

cevap

3

kullanın mükemmel mechanize kitaplığı:

from mechanize import Browser 

b = Browser() 
b.open("http://utahcritseries.com/RawResults.aspx") 
b.select_form(nr=0) 

year = b.form.find_control(type='select') 
year.get(label='2005').selected = True 

src = b.submit().read() 
print src 

makineleştirmek PyPI geçerli: easy_install mechanize

+0

teşekkürler! Bu kutunun dışında çalıştı! Her iki python için yeni ve mekanize ediyorum - bunun için nerede okuyacağımı bilemedim. Çok teşekkürler! –

+0

HTML'yi ayrıştırmanız gerekiyorsa, BeautifulSoup kütüphanesine göz atmalısınız. Mechanize + güzel çorba ekran kazıma için müthiş. http://www.crummy.com/software/BeautifulSoup/ – codeape