Я пытаюсь очистить Amazon с помощью scrapy, все работает нормально, за исключением поля автора, для которого я получаю результат, например,
{'author': ['Somasundaram Chenrayan',
'B. Latha B. லதா',
'Mugil முகில்',
'ஜே. சி. குமரப்பா',
' and ',
'மீ. விநாயகம்',
'\n'
' \n'
' \n'
' \n'
' Napoleon Hill\n'
' \n'
' \n',
'\n'
' \n'
' \n'
' \n'
' Joseph Murphy\n'
' \n'
' \n',
'டாக்டர் அம்பேத்கர்',
'MALINI SUNDAR',
'\n'
' \n'
' \n'
' \n'
' வாணி அரவிந்த்\n'
' \n'
' \n',
'sankareswari சங்கரேஸ்வரி',
'\n'
' \n'
' \n'
' \n'
' George S Clason\n'
' \n'
' \n',
'சசிகுமார் தங்கவேல் ',
'ஆர். ஷண்முகசுந்தரம்',]
после проверки некоторых ответов на stackexchange, я написал ниже упомянутый код в моем модуле элементов, чтобы я мог удалить все лишние пробелы из поля автора, но на самом деле он не работает
import scrapy
from scrapy.loader.processors import MapCompose
from w3lib.html import remove_tags
def normalize_space(value):
return " ".join(value.split())
class Product(scrapy.Item):
author = scrapy.Field(
input_processor=MapCompose(remove_tags, normalize_space),
)
book_name = scrapy.Field()
price = scrapy.Field()
image_links = scrapy.Field()
А вот мой код паука:
import scrapy
from ..items import Product
class AmazonSpider(scrapy.Spider):
# page_number = 1
name = "amazon"
start_urls = [
"https://www.amazon.in/s?bbn=976389031&rh=n%3A976389031%2Cp_n_publication_date%3A2684819031&dc&fst=as%3Aoff&qid=1588845227&rnid=2684818031&ref=lp_976389031_nr_p_n_publication_date_0"
]
def parse(self, response):
items = Product()
book_name = response.css(".a-color-base.a-text-normal").css("::text").extract()
price = response.css(".a-price span::text").extract()
author = response.css(".a-color-secondary .a-size-base+ .a-size-base").css("::text").extract()
image_links = response.css("div img::attr(src)").extract()
items["book_name"] = book_name
items["price"] = price
items["author"] = author
items["image_links"] = image_links
yield items
scince i Я новичок в scrapy Я не знаю, как решить эту проблему. Я буду очень признателен, если вы скажете мне, что не так с этим кодом или как я могу решить эту проблему с помощью re, я также пробовал с re, но он дает только синтаксическую ошибку.