之前介紹了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
})
還有一些其它的參數,需要在使用中摸索了。