сначала спасибо за ваш интерес.
При попытке удалить данные с веб-сайта я сталкиваюсь со следующей проблемой: Есть некоторые поля, которые постоянно повторяются (цена, поверхность) во всех блоках на веб-странице. и некоторые, которые находятся только в некоторых блоках (например, прежняя цена, если цена за элемент снизилась).
Проблема, с которой я сталкиваюсь, заключается в том, что когда я экспортирую элементы как JSON, я имею для Пример 24 цены, 24 поверхности, которые кажутся выровненными (мое определение выровненного было бы получить согласованный Pandas DataFrame после импорта данных в DataFrame). Однако будет, например, только одна предыдущая цена и 17 экземпляров другой нерегулярной переменной (например, age), которая не будет поддерживать согласованность с предыдущими экземплярами.
Так же, как и в файле Json :
price:
1 : 100
...
24: 120
price_old:
1 : 110 # While it would be supposed to be at index 10 for example
Я пробовал несколько обходных путей, включая размещение операторов if для заполнения значения в переменной, если в селекторе For L oop нет ссылки на селектор. К сожалению, я не вижу возможности работать.
Ниже приведен мой (отредактированный) код, заранее благодарю за вашу драгоценную помощь.
import scrapy
from ..items import ScrapWebsiteItem
class ScrapWebsite(scrapy.Spider):
name= "scrapwebsite"
start_urls=[
"URL"
]
def parse(self, response):
items = ScrapWebsiteItem()
listblocks = response.css('selector')
for block in listblocks:
surface = block.css('selector').extract()
price = block.css('selector').extract()
if block.css('selector').extract() is not None:
price_old= block.css('span.price-old::text').extract()
else:
price_old= price
if block.css('selector').extract() is not None:
age = block.css('selector').extract() # This element means there is a "New" banner displayed
else:
age = "Constructed" # If it's not new, it's already constructed
items['surface']= surface
items['price'] = price
items['price_old'] = price_old
items['age']= age
yield items