#json #python-3.x #scrapy
#json #python-3.x #scrapy
Вопрос:
У меня есть файл json, в котором в некотором поле json есть escape-символы, так как я могу удалить escape-символы, вот как выглядят мои json-данные:
{"url": "www.expamle/com", "name": "nttttttHisense 49" FHD TV 49B5200PT 49B5200PT", "price":
"R5,499.00", "brand": "nttttttHisense"}
вот мой метод синтаксического анализа python:
def parse(self, response):
for tv in response.xpath(".//div[@class='product-tile-inner']"):
yield{
'url' : tv.xpath(".//a[@class='product-tile-inner__img js-
gtmProductLinkClickEvent']/@href").get(),
'name' : tv.xpath(".//a[@class='product-tile-inner__img js-
gtmProductLinkClickEvent']/@title").get(),
'price' : tv.xpath(".//p[@class='col-xs-12 price ONPROMOTION']/text()").get(),
'img' : tv.xpath(".//a[@class='product-tile-inner__img js-
gtmProductLinkClickEvent']//@src").get()
}
Комментарии:
1. Просто используйте
json.loads()
для обработки вашего JSON2. Вы не хотите использовать регулярное выражение
re
?
Ответ №1:
Вам нужны strip()
поля, содержащие пробелы:
def parse(self, response):
for tv in response.xpath(".//div[@class='product-tile-inner']"):
url = tv.xpath(".//a[@class='product-tile-inner__img js-tmProductLinkClickEvent']/@href").get()
name = tv.xpath(".//a[@class='product-tile-inner__img js-gtmProductLinkClickEvent']/@title").get()
price = tv.xpath(".//p[@class='col-xs-12 price ONPROMOTION']/text()").get()
img = tv.xpath(".//a[@class='product-tile-inner__img js-gtmProductLinkClickEvent']//@src").get()
yield {
'url': url.strip() if url else url,
'name': name.strip() if name else name,
'price': price.strip() if price else price,
'img': img.strip() if img else img
}