• 在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
    
  • 相关阅读:
    移动端和pc端的判断,不同端做不同的处理
    easyUI combobox的使用
    [Codeforces #196] Tutorial
    [Codeforces #174] Tutorial
    [Codeforces #190] Tutorial
    [Codeforces #211] Tutorial
    [Codeforces #192] Tutorial
    [BZOJ 3196] 二逼平衡树
    [BZOJ 1058] 报表统计
    [P3709] 大爷的字符串题
  • 原文地址:https://www.cnblogs.com/wualin/p/10284641.html
Copyright © 2020-2023  润新知