В те дни я делаю паука с помощью Scrapy в Python. Это простой класс пауков, который делает простой синтаксический анализ некоторого поля на странице Html. Я не использую starts_url [] Scrapy поля, но я использую персонализированный список, как это:У Scrapy есть лимит предмета?
class start_urls_mod():
def __init__(self, url, data):
self.url=url
self.data=data
#Defined in the class:
url_to_scrape = []
#Populated in the body in this way
self.url_to_scrape.append(start_urls_mod(url_found), str(data_found))
проходящего URL, таким образом
for any_url in self.url_to_scrape:
yield scrapy.Request(any_url.url, callback=self.parse_page)
Он хорошо работает с ограниченным числом url like 3000.
Но если я попытаюсь сделать тест, и он нашел около 32532 url для очистки. В выходном файле JSON я нашел только около 3000 url scraped.
Моя функция отзыва это сам:
yield scrapy.Request(any_url.url, callback=self.parse_page)
Таким образом, вопрос, есть некоторый предел памяти для элементов Scrapy?
Theres полный раздел руководства по использованию пределов использования памяти. Проблема в том, что при вызове случайного URL-адреса вы можете найти кого-то, у которого есть файл 1gb .., который может сильно нарушить ваш сервер, который тянет. У вас включено расширение использования памяти (см. Http://doc.scrapy.org/en/latest/topics/extensions.html#topics-extensions-ref-memusage) – Jmons
@JamesTaylor Итак, мне нужно увеличить MEMUSAGE_LIMIT_MB и установить большое значение, чтобы не остановить программу? – RedVelvet
Если вы достигли предела памяти, Scrapy/Python выдаст исключение, указывающее на это. Если это так, определите, почему он использует память, то есть 35 000 запросов - это не так много, чтобы сидеть там (они не такие большие). Scrapy не должен удерживать объекты ответа или предметы намного дольше, чем требуется для их обработки. – Rejected