2015-02-08 3 views
2

В настоящее время я просматриваю сайт, чтобы извлечь информацию о продукте. Сайт состоит из миллионов [около 20 миллионов] информации о продукте, и мне нужно извлечь каждый из них. Мне нужно ускорить скорость сканирования, так как мой искатель в настоящее время очищает всего несколько сотен страниц в минуту.scrapy speed up crawling

Вот мой пример кода сканера.

class XYSspider(CrawlSpider): 
name = "XYZ" 

allowed_domains = ["www.xyz.info"] 
start_urls = ['http://www.xyz.info/'] 

rules = [ 
    Rule(LinkExtractor(allow=r'\.kat$'), follow=True), 
    Rule(LinkExtractor(allow=r'/id_\d+/'), callback='parse_product'), 
] 

def parse_product(self, response): 
    item = DmozItem() 
    item['title'] = response.xpath('//title/text()').extract()[0].encode('utf-8') 
    yield item 

Есть ли способ ускорить процесс обхода. При текущей скорости мне потребовались бы несколько дней, чтобы очистить все данные. Любые идеи будут действительно полезными. Thankyou

ответ

1

Убедитесь, что у вас есть одновременные запросы для домена, установленного в 32 в settings.py.

Если это не помогает, скорее всего, сайт дросселирует вас. Сайты, как правило, имеют какое-то определение не/паук/сканирование и имеют тенденцию блокировать или дросселировать, если они обнаруживают множество запросов от одного и того же IP-адреса.

Я использую http://www.crawlera.com, которым управляет команда по проведению лучевой терапии. Он направляет все ваши запросы через свою прокси-сеть и обрабатывает запреты и т. Д. Это единственный способ, которым я мог царапать на высоких скоростях.

0

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

1) попробуйте подключиться к вашему обходу в высокоскоростной интернет, поскольку это имеет большое значение.

2) попытайтесь разделить один обход ко многим и запустите паука.

3) вы можете уменьшить задержку загрузки, если это возможно.

любое количество .....