Я в настоящее время снимаю цены с веб-сайта, большинство продуктов имеют максимальные и минимальные цены, но не все из них имеют минимальные цены. Те, у кого нет минимума, отбрасывают бесполезные значения, которые я заменял без текста "", но я бы хотел заменить эти пустые значения максимальной ценой (в основном потому, что если цена не меняется, минимальные и максимальные значения совпадают) .
Код обширный, поэтому у меня импортированы следующие библиотеки:
import os
import scrapy
from ..items import TutorialItem
import pandas as pd
from scrapy.http import Request
from scrapy.http import FormRequest
from scrapy.selector import Selector
from scrapy.utils.response import open_in_browser
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
class KikoSpider2(scrapy.Spider):
name = "kiko2"
login_page = 'https://www.kikowireless.com/login'
formdata = {'email': 'thisisan@email.com',
'password': 'QQntDXqK9'}
Код продолжается ..
Важная вещь приходит сюда:
def parse_products(self, response):
items = TutorialItem()
category = response.meta['category']
article_name = response.css('#content .name a::text').extract()
article_price = [ x.replace('$', '').replace('\n', '').replace('\t', '').replace(' ', '') for x in response.css('.price::text').extract()]
article_price_min = [x.replace('\t', '').replace(
'$', '').replace('\n', 'n').split()[-1].replace('n', '') for x in response.css('.discount::text').extract()]
items['article_name'] = article_name
items['article_price'] = article_price
items['article_price_min'] = article_price_min
for item in zip(article_name, article_price, article_price_min):
scraped_info = {'supplier_url' : item[0],
'supplier_item_name' : item[1],
'max_price' : item[2],
'min_price' : item[3],
}
# print(scraped_info)
df_result = pd.DataFrame.from_dict(scraped_info.items())
print(df_result)
yield scraped_info
строка кода article_price = [ x.replace('$', '').replace('\n', '').replace('\t', '').replace(' ', '') for x in response.css('.price::text').extract()]
Извлекает минимальную цену статей, что я могу сделать, чтобы заполнить пробелы в ней article_price
, соответствующей тому же базовому элементу.