天天看点

一个简单好用的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
    })
           

还有一些其它的参数,需要在使用中摸索了。