Example #1
0
 def test_collector(self):
     stats = StatsCollector(self.crawler)
     self.assertEqual(stats.get_stats(), {})
     self.assertEqual(stats.get_value('anything'), None)
     self.assertEqual(stats.get_value('anything', 'default'), 'default')
     stats.set_value('test', 'value')
     self.assertEqual(stats['test'], 'value')
     self.assertEqual(stats.get_stats(), {'test': 'value'})
     stats['test'] = 'value2'
     self.assertIn('test', stats)
     self.assertEqual(stats['test'], 'value2')
     self.assertEqual(next(iter(stats)), 'test')
     self.assertEqual(stats.get_stats(), {'test': 'value2'})
     stats['test'] = 'value'
     stats.set_value('test2', 23)
     self.assertEqual(stats.get_stats(), {'test': 'value', 'test2': 23})
     self.assertEqual(stats.get_value('test2'), 23)
     stats.inc_value('test2')
     self.assertEqual(stats.get_value('test2'), 24)
     stats.inc_value('test2', 6)
     self.assertEqual(stats.get_value('test2'), 30)
     stats.max_value('test2', 6)
     self.assertEqual(stats.get_value('test2'), 30)
     stats.max_value('test2', 40)
     self.assertEqual(stats.get_value('test2'), 40)
     stats.max_value('test3', 1)
     self.assertEqual(stats.get_value('test3'), 1)
     stats.min_value('test2', 60)
     self.assertEqual(stats.get_value('test2'), 40)
     stats.min_value('test2', 35)
     self.assertEqual(stats.get_value('test2'), 35)
     stats.min_value('test4', 7)
     self.assertEqual(stats.get_value('test4'), 7)
Example #2
0
 def test_collector(self):
     stats = StatsCollector(self.crawler)
     self.assertEqual(stats.get_stats(), {})
     self.assertEqual(stats.get_value('anything'), None)
     self.assertEqual(stats.get_value('anything', 'default'), 'default')
     stats.set_value('test', 'value')
     self.assertEqual(stats.get_stats(), {'test': 'value'})
     stats.set_value('test2', 23)
     self.assertEqual(stats.get_stats(), {'test': 'value', 'test2': 23})
     self.assertEqual(stats.get_value('test2'), 23)
     stats.inc_value('test2')
     self.assertEqual(stats.get_value('test2'), 24)
     stats.inc_value('test2', 6)
     self.assertEqual(stats.get_value('test2'), 30)
     stats.max_value('test2', 6)
     self.assertEqual(stats.get_value('test2'), 30)
     stats.max_value('test2', 40)
     self.assertEqual(stats.get_value('test2'), 40)
     stats.max_value('test3', 1)
     self.assertEqual(stats.get_value('test3'), 1)
     stats.min_value('test2', 60)
     self.assertEqual(stats.get_value('test2'), 40)
     stats.min_value('test2', 35)
     self.assertEqual(stats.get_value('test2'), 35)
     stats.min_value('test4', 7)
     self.assertEqual(stats.get_value('test4'), 7)
Example #3
0
async def _request_handler(request: pyppeteer.network_manager.Request,
                           scrapy_request: Request,
                           stats: StatsCollector) -> None:
    # set headers, method and body
    if request.url == scrapy_request.url:
        overrides = {
            "method": scrapy_request.method,
            "headers": {
                key.decode("utf-8").lower(): value[0].decode("utf-8")
                for key, value in scrapy_request.headers.items()
            },
        }
        if scrapy_request.body:
            overrides["postData"] = scrapy_request.body.decode(
                scrapy_request.encoding)
    else:
        overrides = {"headers": request.headers.copy()}
        if scrapy_request.headers.get("user-agent"):
            user_agent = scrapy_request.headers["user-agent"].decode("utf-8")
            overrides["headers"]["user-agent"] = user_agent
    await request.continue_(overrides)
    # increment stats
    stats.inc_value("pyppeteer/request_method_count/{}".format(request.method))
    stats.inc_value("pyppeteer/request_count")
    if request.isNavigationRequest():
        stats.inc_value("pyppeteer/request_count/navigation")
Example #4
0
async def _response_handler(response: pyppeteer.network_manager.Response,
                            stats: StatsCollector):
    stats.inc_value("pyppeteer/response_count")
    stats.inc_value("pyppeteer/response_status_count/{}".format(
        response.status))