Я новичок во всем этом.Мне удалось пролистать 3600+ элементов на странице и извлечь такие данные, как имя, адрес, телефон, почта.Все, что я написал в файл .csv.
Мое волнение было прервано, когда я обнаружил, что у некоторых дистрибьюторов отсутствовала информация (информация, которая написана на веб-сайте и была неправильно записана в .csv. Кроме того, некоторые пустые столбцы (например, 'B')).
Кроме того, я не смог найти способ, чтобы квадратные скобки и апострофы не были записаны, но я легко могу стереть их все с помощью LibreOficce Calc.
(Вмой код Я вставил только несколько URL из 3600+, в том числе те, что на прилагаемой картинке, которые показывают проблему)
import scrapy
import requests
import csv
class QuotesSpider(scrapy.Spider):
name = "final"
def start_requests(self):
urls = [
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla01586 /zarate/bodelon-edgardo-aristides/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla01778/zarate/cesario- mariano-rodrigo/?countrySelectorCode=AR', 'https://www.bosch- professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00140/zarate/de-vicenzi-elio-mario-g.-rosana-sh/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla01941/zarate/de-vincenzi-elio-mario-y-rosana-sh/?countrySelectorCode=AR', 'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla02168/zarate/ferreterias-indufer-s.a./?countrySelectorCode=AR',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
marca = []
names = []
direcc = []
locali = []
telef = []
mail = []
site = []
for item in response.css('div.item-content'):
marca.append('Bosch')
names.append(item.css('p.item-name::text').extract())
lista_direcc = item.css('p.item-address::text').extract()
direcc.append(lista_direcc[0].strip())
locali.append(lista_direcc[1].strip())
telef.append(item.css('a.btn-phone.trackingElement.trackingTeaser::text').extract())
mail.append(item.css('a.btn-email.trackingElement.trackingTeaser::text').extract())
site.append(item.css('a.btn-website.trackingElement.trackingTeaser::text').extract())
with open('base.csv', 'a') as csvFile:
fieldnames = ['Empresa', 'Nombres', 'Dirección' , 'Localidad', 'Teléfono', 'Mail', 'Sitio Web']
writer = csv.DictWriter(csvFile, fieldnames=fieldnames)
writer.writerow({'Empresa' : marca, 'Nombres' : names, 'Dirección' : direcc, 'Localidad' : locali, 'Teléfono' : telef, 'Mail' : mail, 'Sitio Web' : site })
csvFile.close()

Вы можете увидеть пример того, чтоЯ говорю об этом. Программа создала несколько дополнительных столбцов и в некоторых случаях сместила данные на один столбец влево.
Я предполагаю, что решение этой проблемы довольно простое, как и все мои предыдущие вопросы.Но все же это озадачивает меня.
Так что большое спасибо за любую помощь и за терпение моего плохого английского. Приветствия!