2009-04-24 39 views
5

Sử dụng Python, tôi đang cố gắng đọc các giá trị trên http://utahcritseries.com/RawResults.aspx. Tôi có thể đọc trang chỉ là tốt, nhưng gặp khó khăn khi thay đổi giá trị của hộp kết hợp năm, để xem dữ liệu từ các năm khác. Làm thế nào tôi có thể đọc dữ liệu trong nhiều năm khác với mặc định của năm 2002?Nhận dữ liệu Python từ ứng dụng AJAX asp.net

Trang dường như đang thực hiện Bài đăng HTTP khi hộp kết hợp năm đã thay đổi. Tên của điều khiển là ct100 $ ContentPlaceHolder1 $ ddlSeries. Tôi cố gắng thiết lập một giá trị cho điều khiển này bằng cách sử dụng urllib.urlencode (postdata), nhưng tôi phải làm điều gì đó sai-dữ liệu trên trang không thay đổi. Điều này có thể được thực hiện bằng Python?

Tôi không muốn sử dụng Selenium, nếu có thể.

Tôi đã sử dụng mã như thế này (từ người dùng của DBR stackoverflow)

import urllib 

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

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

print src 

Nhưng dường như được kéo lên cùng 2002 dữ liệu. Tôi đã thử sử dụng firebug để kiểm tra các tiêu đề và tôi thấy rất nhiều dữ liệu không liên quan và tìm kiếm ngẫu nhiên đang được gửi qua lại và tôi có cần đăng các giá trị này về máy chủ không?

Trả lời

3

Sử dụng tuyệt vời mechanize thư viện:

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 

mechanize có sẵn trên PyPI: easy_install mechanize

+0

cảm ơn! Điều đó làm việc ngay ra khỏi hộp! Tôi mới vào cả python và mechanize - tôi không chắc chắn nơi để đọc cho điều này. Cảm ơn nhiều! –

+0

Nếu bạn cần phân tích cú pháp HTML, bạn nên xem thư viện BeautifulSoup. Cơ chế + súp đẹp là tuyệt vời cho cạo màn hình. http://www.crummy.com/software/BeautifulSoup/ – codeape

Các vấn đề liên quan