天天看點

一個簡單好用的Python爬蟲架構(2)- 渲染下載下傳

之前介紹了simplified-scrapy架構提供的普通下載下傳類,這裡再介紹一下,使用simplified-scrapy架構封裝pyppeteer庫進行渲染下載下傳的方法。要想使用這個,需要安裝pyppeteer,Python版本要求3.5+。先來一個例子

def callback(html,url,data):
  print (url,html)
req = RequestRender({#傳入Chromium路徑
    'executablePath': 'chrome/Chromium.app/Contents/MacOS/Chromium'
  })
req.get('http://www.scrapyd.cn/',callback)
           

有時候為了查找問題或提高下載下傳速度,需要做一些過濾。我們可以通過繼承RequestRender類,重寫它的方法來實作,代碼如下:

class RequestRenderEx(RequestRender):
  async def inject_request(self,req):
    if req.resourceType in ['media','image']:
      await req.abort()# 将符合條件的請求結束掉
    else:
      print (req.url)# 列印出其它請求,看看有沒有要過濾的。一些統計腳本、廣告腳本就可以過濾掉
      await req.continue_()
           

下面就可以使用這個類來建立執行個體了

req = RequestRenderEx({#傳入Chromium路徑
    'executablePath': 'chrome/Chromium.app/Contents/MacOS/Chromium'
  })
           

不同的網站,情況可能不一樣,有時候請求會出錯,我們可以設定不同的參數來解決。比如

req.get('http://www.scrapyd.cn/',callback,{
      'waitForNavigation':True,
      'timeout': 1000*60
    })
           

還有一些其它的參數,需要在使用中摸索了。