2013-12-10 47 views
1

爲了幫助我學習Python,我決定從ESPNFC網站的'live'頁面(例如here)上截屏。使用Python/Scrapy/Urllib2進行屏幕截圖似乎被屏蔽

它一直在努力,直到一天前,但最終排序了一些東西,我去測試它,我回來的唯一一條評論是[u'Commentary Not Available']。

有沒有人有任何想法他們如何做到這一點,以及任何簡單快捷的方法?我正在使用Scrapy/Xpath和Urllib2。

編輯//

for game_id in processQueue: 
    data_text = getInformation(game_id) 
    clean_events_dict = getEvents(data_text) 
    break 

不起作用一樣

i = getInformation(369186) 
j = getEvents(i) 

在第一個樣品,processQueue是在game_ids名單。是考慮到這些第一個腳本開始刮擦。這是在它有機會移動到另一個遊戲之前打破的game_id

在第二個示例中,我使用單個遊戲ID。

第一個失敗,第二個失敗,我完全不知道爲什麼。有任何想法嗎?

+0

確定的值傳遞給第一個樣品的第一次迭代是一樣的價值觀第二樣品中通過?檢查類型也是一樣的,並且你沒有混淆整數/字符串。 – halfer

+1

我喜出望外,你是對的。我不能相信我是這麼一個白癡,不去檢查我正試圖去的網址。這不是一個字符串,它實際上是在url中的中間一個巨大的列表。謝謝你的幫助。 – user2073606

+0

嘿,偉大的東西'':-)。 – halfer

回答

0

有幾件事情你可以試試,假設你仍然可以從瀏覽器訪問數據。但請記住,網站運營商通常有權阻止您;這就是爲什麼那些依賴於單個網站的項目是一個有風險的主張。在這裏,他們是:

  • 延遲每間幾秒鐘刮
  • 延遲幾秒之間的每個刮
  • 在會話期間接受你刮會議
  • 運行JavaScript中的cookie(無法實現的隨機數Scrapy據我所知)
  • 分享幾個IP之間的拼搶負載範圍

還有其他施特拉特吉斯其中,我一般認爲,不太道德:

  • 修改您的用戶代理字符串,使您的刮刀看起來像一個瀏覽器

suggest in this answer here是刮削器應設置服從的robots.txt。但是,如果您對您的刮板進行編程時表現良好,網站運營商將沒有任何理由阻止您。最常見的錯誤,我在這個堆棧溢出的標籤看到的僅僅是刮削器正在運行,過猛,他們意外導致服務的(未成年人)的拒絕。所以,請先放慢你的傷勢,看看是否有幫助。

+0

我的第一個猜測是切換IP,然後更改用戶代理。 –

+0

我試過用戶代理的東西,並添加了一個延遲,但都沒有達到預期的效果。請參閱編輯我剛剛找到的內容,但無法弄清楚。謝謝。 – user2073606