之前介绍了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
})
还有一些其它的参数,需要在使用中摸索了。