Я новичок в Python, пытаясь построить веб-скребок с помощью Scrapy, и я получаю много непечатных и пробелов в результатах. Я пытаюсь перебрать словарь с помощью для l oop, где значения являются списками, а затем запустить метод .strip (), чтобы избавиться от всех непечатаемых символов. Только теперь я вижу эту ошибку: «TypeError: индексы списка должны быть целыми или кусочками, а не str». Я знаю, что, должно быть, неправильно понял объект, но после нескольких дней просмотра документов и подобных исключений я не нашел способа его разрешить.
Код, который я использую:
# -*- coding: utf-8 -*-
import scrapy
from ..items import JobcollectorItem
from ..AutoCrawler import searchIndeed
class IndeedSpider(scrapy.Spider):
name = 'indeed'
page_number = 2
start_urls = [searchIndeed.current_page_url]
def parse(self, response):
items = JobcollectorItem()
position = response.css('.jobtitle::text').extract()
company = response.css('span.company::text').extract()
location = response.css('.location::text').extract()
# print(position[0])
items['position'] = position
items['company'] = company
items['location'] = location
for key in items.keys():
prestripped = items[key]
for object in prestripped:
object = object.strip('\n')
items[key] = prestripped
yield items
Я использую python 3.7.4. Также приветствуются любые советы по упрощению функции избавления от вложенных циклов for. Код для всего проекта можно найти здесь .
Спасибо за помощь!
Edit0: исключение выдается в строке 27, читающей: "prestripped = items [ key] [value] TypeError: индексы списка должны быть целыми или кусочками, а не str "
Edit1: структура данных это items {'key': [list_of_strings]}, где имя словаря - элементы, ключи - это строка и значение ключа - это список, причем каждый элемент списка является строкой.
Edit2: обновлен код для отражения ответа Alex.Kh. Кроме того, вот примерное значение того, что в настоящее время возвращается: {company: ['\ nCompany Name', '\ n', '\ nCompany Name', '\ n', '\ n', '\ n',] , местоположение: ['Some City, US', 'Some City, US'], позиция: ['', '\ n', '\ nИмя должности', '', 'Имя позиции']}