风哥教程

培训 . 交流 . 分享
Make progress together!

Splash抓取javaScript动态渲染页面

[复制链接]
内容发布:laical| 发布时间:2020-9-28 17:33:55
scrapy爬虫框架没有js渲染服务,所以我们采集不到数据,这时候我们就需要一个渲染引擎来为我们提供渲染服(Splash渲染引擎)
Splash渲染引擎:
Splash是一个Javascript渲染服务,Splash是为Scrapy爬虫框架提供渲染的
splash的作用:
1、返回渲染的html页面
2、支持渲染多个页面
3、渲染速度快
4、模拟浏览器加载js,并返回js运行后的数据
安装Splash:
1、安装scrapy-splash模块
2、安装docker
3、启动docker,拉取spash
Scrapy 中使用Splash渲染配置代理说明:
[Python] syntaxhighlighter_viewsource syntaxhighlighter_copycode
        #! -*- encoding:utf-8 -*-[/size][/color][/align]        import base64            
        import sys
        import random

        PY3 = sys.version_info[0] >= 3

        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str

            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes

        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服务器(产品官网 www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"

                # 代理验证信息
                proxyUser = "username"
                proxyPass = "password"

                request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)

                # 添加验证头
                encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
                request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass                    

                # 设置IP切换头(根据需求)
                tunnel = random.randint(1,10000)
                request.headers['Proxy-Tunnel'] = str(tunnel)

        class SplashProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服务器(产品官网 www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"

                # 代理验证信息
                proxyUser = "username"
                proxyPass = "password"

                request.meta['splash']['args']['proxy'] = "http://{}:{}@{}:{}".format(proxyUser,proxyPass,proxyHost,proxyPort)



上一篇:爬虫解析方式
下一篇:Android平台下使用OkHttp采集数据
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门文章教程

  • Oracle 12cR2 九大新功能全面曝光_详解云数
  • MySQL5权威指南(第3版)PDF电子版下载
  • 风哥Oracle数据库巡检工具V1.0(附2.6网页
  • PostgreSQL数据库中文培训手册
  • Navicat for MySQL最新版下载地址及注册码
  • Oracle OCP认证考试IZ0-053题库共712题数据
快速回复 返回顶部 返回列表