scrapy設置"請求池"

爬蟲請求常見的錯誤

  • 200:請求成功 處理方式:獲得響應的內容,進行處理

  • 201:請求完成,結果是創建了新資源。新創建資源的 URI 可在響應的實體中得到 處理方式:爬蟲中不會遇到

  • 202:請求被接受,但處理尚未完成 處理方式:阻塞等待

  • 204:服務器端已經實現了請求,但是沒有返回新的信 息。如果客戶是用戶代理,則無須爲此更新自身的文檔視圖。 處理方式:丟棄

  • 300:該狀態碼不被 HTTP/1.0 的應用程序直接使用, 只是作爲 3XX 類型迴應的默認解釋。存在多個可用的被請求資源。 處理方式:若程序中能夠處理,則進行進一步處理,如果程序中不能處理,則丟棄

  • 301:請求到的資源都會分配一個永久的 URL,這樣就可以在將來通過該 URL 來訪問此資源 處理方式:重定向到分配的 URL

  • 302:請求到的資源在一個不同的 URL 處臨時保存 處理方式:重定向到臨時的 URL

  • 304 請求的資源未更新 處理方式:丟棄

  • 400 非法請求 處理方式:丟棄

  • 401 未授權 處理方式:丟棄

  • 403 禁止 處理方式:丟棄

  • 404 沒有找到 處理方式:丟棄

  • 5XX 迴應代碼以“5”開頭的狀態碼錶示服務器端發現自己出現錯誤,不能繼續執行請求 處理方式:丟棄

話不多說直接擼代碼

    from scrapy import log    import random    from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware    class RotateUserAgentMiddleware(UserAgentMiddleware):
    # for more user agent strings,you can find it in http://www.useragentstring.com/pages/useragentstring.php
    user_agent_list = [        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 "
        "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 "
        "(KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 "
        "(KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 "
        "(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 "
        "(KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 "
        "(KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",        "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 "
        "(KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",        "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 "
        "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 "
        "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
    ]    def process_request(self, request, spider):
        ua = random.choice(self.user_agent_list)        if ua:            # 顯示當前使用的useragent
            print "********Current UserAgent:%s************" % ua            # 記錄
            log.msg('Current UserAgent: ' + ua)
            request.headers.setdefault('User-Agent', ua)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章