2016-03-28 80 views
6

我試圖獲取大量學術文章的信息作爲我的研究的一部分。文章的數量是數千。由於Google學術搜索沒有API,我正試圖抓取或抓取學者。現在我現在說,這在技術上反對EULA,但我試圖對此非常有禮貌和合理。我瞭解Google不允許漫遊器將流量限制在合理範圍內。我在每次請求之間以1秒爲單位開始測試一批約500個請求。大約前100個請求後我被阻止。我試過其他多種策略,包括:爬行Google學術搜索

  1. 延長暫停到〜20多歲和加入一些隨機噪聲給他們
  2. 使暫停對數正態分佈(使大部分停頓是秒,但每次的順序現在然後再延長几分鐘甚至更長的時間)
  3. 在請求塊(〜100)之間做了很長時間的停頓(幾個小時)。

我懷疑在這一點上,我的腳本是添加任何人都會的任何可觀的流量。但有一種方法或其他方法我會在100-200次的請求後被阻止。有誰知道克服這個好策略(我不在乎是否需要幾周,只要它是自動的)。此外,有沒有人有經驗直接與谷歌合作,並要求許可做類似的事情(用於研究等)?是否值得嘗試寫下它們並解釋我想要做什麼以及如何做,並看看我能否獲得我的項目許可?我將如何去聯繫他們?謝謝!

+0

微軟的學術搜索如何與谷歌的谷歌? –

+0

[這增加了討論](https://www.quora.com/Why-doesnt-Google-have-an-official-API-for-Google-Scholar) –

+1

我希望你已經設置了你的'User-代理「正確的請求頭 - 請求沒有正確設置它很容易被檢測爲機器人。 :) –

回答

1

未經測試,我還是很肯定下列之一的伎倆:

  1. 容易,但成功的可能性很小:

    刪除所有cookie的網站有問題後,每個蘭特(0,100)請求,
    然後更改您的用戶代理,接受的語言等,然後重複。更

  2. 一些工作,但一個更堅固的蜘蛛爲結果:

    通過Tor的,其他代理,移動網絡等,發送您的要求來掩蓋你的IP(也做建議1在每個把關於硒

更新我錯過了你使用硒的事實,理所當然這是某種現代編程語言(我知道Selenium可以使用最廣泛使用的語言,但是也是作爲某種瀏覽器插件,只需很少的編程技能)。因爲我認爲你的編碼技能不是(或者不是)?令人難以置信的,對於其他使用Selenium時有相同限制的人,我的答案是要麼學習一個簡單的腳本腳本語言((或者不是)? PowerShell ?!)或JavaScript(因爲它是您正在使用的網站;-))並從此處取得它。

如果順利地自動抓取就像瀏覽器插件一樣簡單,網絡將不得不變得更加混亂,模糊和憑據要求苛刻的地方。