2014-09-26 74 views
3

我想湊線走勢來源:http://scores.covers.com/football-scores-matchups.aspx發送POST請求AJAX與Python3.4和urllib的

我需要通過使用提供的日曆的每個季節和周迭代:

當我檢查在網絡上看到是越來越送什麼,我看到兩個POST請求時,我改變季節:

(我結合上述3個圖像變成1,因爲我沒有足夠的代表處發佈1個多圖)

http://s29.postimg.org/773muclra/covers_scrape4.jpg

我一整天都在搜索和閱讀並破解它,並沒有取得任何進展。如果我編輯有效載荷爲意外事件,我可以重新創建使用Firebug編輯和重新發送發佈請求的錯誤。所以我有一種感覺,問題在於我編碼和發送數據的方式。我已經嘗試了json.dump,utf-8,Content-Type application/x-www ...,在我能想到的每個組合中都有。

我當前的代碼如下:

import urllib.request 
import json 
import urllib.parse 
class Scraper(): 

    def __init__(self): 
     pass 

    def scrape(self): 
     url = 'http://scores.covers.com/ajax/SportsDirect.Controls.LiveScoresControls.ScoresCalendar,SportsDirect.Controls.LiveScoresControls.ashx?_method=changeDay&_session=no' 

     data = { 
      'league': '1', 
      'SeasonString': '2012-2013', 
      'Year': '1', 
      'Month': '1', 
      'Day': '1' 
     }   

     # data = urllib.parse.urlencode(data).encode('utf-8') 
     data = json.dumps(data).encode('utf-8') 

     headers = { 
      'Host': 'scores.covers.com', 
      'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0', 
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
      'Accept-Language': 'en-US,en;q=0.5', 
      'Accept-Encoding': 'gzip, deflate', 
      'Referer': 'http://scores.covers.com/football-scores-matchups.aspx', 
      'Content-Type': 'application/json', 
      'Connection': 'keep-alive', 
      'Pragma': 'no-cache', 
      'Cache-Control': 'no-cache' 
     } 

     req = urllib.request.Request(url) 
     req.data = data 
     req.headers = headers 

     f = urllib.request.urlopen(req) 
     print(f.read()) 

     return f 

其中給出:提前

In [1]: import scraper 

In [2]: s = scraper.Scraper() 

In [3]: s.scrape() 
b"new Object();r.error = new ajax_error('System.ArgumentException','Object of type \\'System.DBNull\\' cannot be convert 
ed to type \\'System.String\\'.',0)" 
Out[3]: <http.client.HTTPResponse at 0x4d6b650> 

感謝。

回答

1

data="league=1\nSeasonString=2014-2015\nYear=1\nMonth=1\nDay=1"使用

的數據不是一個JSON類型。

+0

謝謝!這正是問題所在。 – 2014-09-26 19:09:28