Итак, я довольно новичок в Python и пытаюсь создать сканер scrapy для извлечения данных о дистрибьюторах с сайта.Но я не получаю ожидаемых результатов.Это мой код:
class QuotesSpider(scrapy.Spider): name = "final_url" def start_requests(self): urls = [ "https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/dealerslist/almagro/2675585174/?countrySelectorCode=AR" ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): urls_ = [] for item in response.css('div.row.m-dealer_list__row'): half_urls_ = item.css('div.m-dealer_list__addr a.link.trackingElement::attr(href)').getall() for half in half_urls_: urls_.append('https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/' + half) with open('sub_urls.txt', 'a') as doc: doc.write(str(urls_))
Я ожидал ссылку (href) на каждого дистрибьютора -5 в этом случае - где я могу извлечь имя, адрес, почту, телефон и сайт.Вместо этого я получаю этот запутанный результат:
['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR'] ['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR'] ['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00506/almagro/g-y-p-new-tree-s.a/?countrySelectorCode=AR'] ['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00506/almagro/g-y-p-new-tree-s.a/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00303/almagro/medrano-construcciones-s./?countrySelectorCode=AR'] ['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00506/almagro/g-y-p-new-tree-s.a/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00303/almagro/medrano-construcciones-s./?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00304/almagro/medrano-construcciones-s.a./?countrySelectorCode=AR']
Я думал, что это может быть связано с режимом 'a' в функции .write, но если я использую 'w', я просто получаю последнюю ссылку.И этот URL, который я привожу, только один из более чем 700, поэтому созданный исходный текст .text был довольно большим и бесполезным.
Заранее благодарим за любую помощь, которую вы можете оказать.Я чувствую, что это действительно глупая проблема, которую я просто не вижу.
Строка, которая пишет в ваш файл, находится там:
for half in half_urls_: urls_.append('https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/' + half) with open('sub_urls.txt', 'a') as doc: doc.write(str(urls_))
Переместите его обратно на уровень отступа.Он добавляет ваш полный список дистрибьюторов для каждого дистрибьютора в файл.
Попробуйте сделать так: