zoukankan      html  css  js  c++  java
  • 在Scrapy中使用selenium

    在scrapy中使用selenium

    在scrapy中需要获取动态加载的数据的时候,可以在下载中间件中使用selenium
    编码步骤:

    1. 在爬虫文件中导入webdrvier类
    2. 在爬虫文件的爬虫类的构造方法中进行浏览器实例化的操作
    3. 在爬虫类close方法中进行浏览器关闭的操作
    4. 在下载中间件的peocess_response方法中编写执行浏览器自动化的操作
    
    from scrapy.http import HtmlResponse
    class WangyiproDownloaderMiddleware(object):
    
    
        def process_request(self, request, spider):
    
            return None
    
        # 可以拦截到响应对象(下载器传递给spider的响应对象)
        def process_response(self, request, response, spider):
            '''
            :param request:当前响应对象对应的请求对象
            :param response:拦截到的响应对象
            :param spider:爬虫文件中对应的爬虫类的实例
            :return:
            '''
            # print(request.url+'这是下载中间件')
            # 响应对象中存储页面数据的篡改
            url_list = [
                'http://news.163.com/world/',
                'http://news.163.com/domestic/',
                'http://news.163.com/air/',
                'http://war.163.com/'
            ]
            if request.url in url_list:
                spider.bro.get(url=request.url)
                # page_text页面数据就是包含了动态加载出来的新闻数据对应的页面数据
                page_text = spider.bro.page_source
                # 返回篡改后的响应对象
                return HtmlResponse(url=spider.bro.current_url,body=page_text,encoding='utf-8')
            else:
                return response
    
  • 相关阅读:
    HTML快速复习
    jQueryAjax
    jQuery工具类函数
    jQuery常用插件
    jQuery动画
    CodeBlock 使用TextOut出错
    Java数组与vector互转
    C++字符串常量
    Android 开发必备
    Java 修改Windows注册表,以实现开机自启动应用程序。
  • 原文地址:https://www.cnblogs.com/wualin/p/10284641.html
Copyright © 2011-2022 走看看