Тестовый паук все еще работает - найдите изменения страницы

Как я могу протестировать паука scrapy на данных онлайн.

Я сейчас из этот пост о том, что можно протестировать паука против офлайн данные.

Моя цель — проверить, извлекает ли мой паук правильные данные со страницы или страница изменилась. Я извлекаю данные через XPath, и иногда страница получает и обновляется, и мой парсер больше не работает. Я хотел бы, чтобы тест был как можно ближе к моему коду, например. используя настройку паука и скрапинга, и просто подключитесь к методу синтаксического анализа.


person lony    schedule 07.02.2016    source источник
comment
Вы пробовали Spider Contracts? doc.scrapy.org/en/latest/topics/contracts.html   -  person Valdir Stumm Junior    schedule 07.02.2016
comment
Да спасибо. Это мой план Б, но я все же хотел бы настоящий тест, потому что я хочу сделать больше после проверки.   -  person lony    schedule 07.02.2016
comment
Напишите скрап-конвейер для ожидаемых значений данных. Если ваш скребок не очищает ожидаемое значение для поля, вам следует повысить скрайб DropItem   -  person kiran.koduru    schedule 16.02.2016
comment
Это решает вашу проблему? --› stackoverflow.com/questions/6456304/scrapy-unit- тестирование/   -  person Hadrien    schedule 06.07.2016
comment
Похоже на то, буду разбираться! Спасибо   -  person lony    schedule 06.07.2016


Ответы (1)


Ссылаясь на предоставленную вами ссылку, вы можете попробовать этот метод онлайн-тестирования, который я использовал для своей проблемы, похожей на вашу. Все, что вам нужно сделать, это вместо того, чтобы читать запросы из файла, вы можете использовать библиотеку запросов, чтобы получить для вас живую веб-страницу и составить скрап-ответ из ответа, который вы получаете от запросов, как показано ниже.

import os
import requests

from scrapy.http import Response, Request

def online_response_from_url (url=None):

    if not url:
        url = 'http://www.example.com'

    request = Request(url=url)


    oresp = requests.get(url)

    response = TextResponse(url=url, request=request,
    body=oresp.text, encoding = 'utf-8')

    return response
person Adi Daryanani    schedule 06.07.2017