Python 如何使用scrapy';在我的amazon spider中添加Itemloader,以便从输出中删除所有新行字符或额外的空格
我正在尝试使用scrapy刮取amazon,除了author字段之外,其他一切都很好 我得到的结果是Python 如何使用scrapy';在我的amazon spider中添加Itemloader,以便从输出中删除所有新行字符或额外的空格,python,scrapy,Python,Scrapy,我正在尝试使用scrapy刮取amazon,除了author字段之外,其他一切都很好 我得到的结果是 {'author': ['Somasundaram Chenrayan', 'B. Latha B. லதா', 'Mugil முகில்', 'ஜே. சி. குமரப்பா', ' and ', 'மீ. விநாயகம்', '\n'
{'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上的一些答案之后,我在我的items模块中编写了下面提到的代码,这样我就可以从author字段中删除所有多余的空格,但它实际上不起作用
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
因为我是新来的,我不知道如何解决这个问题。如果你能告诉我这段代码出了什么问题,或者我如何用re解决这个问题,我会非常感激。我也尝试过re,但它只给出了语法错误。我想你可能是在混音。您没有使用项目加载器,因此定义input\u processor
是无用的
仔细查看的第二个代码片段,其中使用项目加载器(与项目相反)提取数据并应用定义的输入处理器