class HomedepotcrawlSpider(CrawlSpider):
name = 'homeDepotCrawl'
#allowed_domains = ['homedepot.com']
start_urls =['https://www.homedepot.com/b/Appliances/ZLINE-Kitchen-and-Bath/N-5yc1vZbv1wZhsy?experienceName=default&Nao=0']
def parse(self, response):
for item in self.parseHomeDepot(response):
yield item
next_page_url = response.xpath('//link[@rel="next"]/@href').extract_first()
if next_page_url:
yield response.follow(url=next_page_url, callback=self.parse)
def parseHomeDepot(self, response):
items = response.css('.plp-pod')
for product in items:
item = HomedepotSpiderItem()
#get SKU
productSKU = product.css('.pod-plp__model::text').getall()
#get rid of all the stuff i dont need
productSKU = [x.strip(' ') for x in productSKU] #whiteSpace
productSKU = [x.strip('\n') for x in productSKU]
productSKU = [x.strip('\t') for x in productSKU]
productSKU = [x.strip(' Model# ') for x in productSKU] #gets rid of the model name
productSKU = [x.strip('\xa0') for x in productSKU] #gets rid of the model name
item['productSKU'] = productSKU
yield item
Объяснение проблемы
Вот часть программы, над которой я работал, чтобы очистить данные. Я оставил свой код для очистки других полей, потому что я не думал, что это необходимо включать в этот пост. Когда я запускаю эту программу и экспортирую данные в Excel, я получаю первые 240 элементов (10 страниц). Это доходит до строки 241 моей электронной таблицы (первая строка занята метками). Затем, начиная со строки 242, первые 241 строка повторяются еще раз. Затем снова в строках 482 и 722.
Скребок выводит первые 240 элементов 3 раза
РЕДАКТИРОВАТЬ Итак, я просматривал журнал во время очистки, и оказалось, что каждая страница была очищена. Последняя страница:
https://www.homedepot.com/b/Appliances/ZLINE-Kitchen-and-Bath/N-5yc1vZbv1wZhsy?experienceName=default&Nao=696&Ns=None>
, а затем в лог-файле снова отображается первая страница, которая очищается, а это:
https://www.homedepot.com/b/Appliances/ZLINE-Kitchen-and-Bath/N-5yc1vZbv1wZhsy?experienceName=default
Я полагаю, что из-за .. 
Терминальная команда, которую я использую для экспорта в Excel:
scrapy crawl homeDepotCrawl -t csv -o - > "(File Location)"
Редактировать : причина, по которой я использую эту команду, заключается в том, что при экспорте Scrapy добавляет очищенные данные в файл, так что это стирает целевой файл и просто создает его снова.
Код, который я использовал для получения всех страниц:
<a class="hd-pagination__link" title="Next" href="/b/Appliances/ZLINE-Kitchen-and-Bath/N-5yc1vZbv1wZhsy?experienceName=default&Nao=24&Ns=None" data-pagenumber="2"></a>
Изначально я думал, что это веб-сайт вызывает такое неожиданное поведение, поэтому в settings.py я изменил ROBOTSTXT_OBEY = 0
и я добавил задержку, но это ничего не изменило.
Так что я хотел бы помочь с:
- выяснение, почему выход CSV занимает только первые 240 Предметы (10 страниц) и повторяется 3 раза
-Как убедиться, что паук не go вернулся к первой странице е после выскабливания первых 30