У меня есть сценарий (scrapt.py), который я часто использую с сельдереем. сценарий содержит список, в котором хранится то, что я очищаю. как использовать этот список в контексте? tasks.py
import time
from celery import shared_task, task
from .scrapt import scrape
@task
def scrape_dev_to():
scrape()
return
этот scrapt.py содержит функцию
import os
os.chmod('./chromedriver', 0o755)
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
def scrape():
opt = Options()
opt.add_argument("--remote-debugging-port=9222")
opt.add_argument("--no-sandbox")
opt.add_argument("--disable-dev-shm-usage")
driver = webdriver.Chrome(options=opt,
executable_path='./chromedriver')
driver.get('https://www.ig.com/en/forex/markets-forex')
timeout = 10
try:
WebDriverWait(driver, timeout).until(
EC.visibility_of_element_located(
(By.XPATH,
"//div[@class='dynamic-table__cell']")
)
)
except TimeoutException:
print("Struggling to get the page....Have faith in this buggy script!")
data = []
while not data:
for elm in driver.find_elements(By.CSS_SELECTOR, "span[data-field=V2-F-BID]"):
if elm.text and elm.text != '-': # Maybe check on contains digit
data.append(elm.text)
time.sleep(7)
tet =[]
while not tet:
for em in driver.find_elements(By.CSS_SELECTOR, "span[data-field=OFR]"):
if em.text and em.text != '-': # Maybe check on contains digit
tet.append(em.text)
time.sleep(7)
print(data)
return data
Это функция просмотра, моя попытка заключалась в том, чтобы импортировать функцию очистки, и по странной причине я почувствовал я мог бы использовать список данных в контексте. Я даже попытался добавить в него функцию, но получил ошибку позиционного аргумента. Я все запутал. я просто хочу постоянно отображать новые данные или список тетрадей в моем шаблоне.
def pricelist(request):
from .scrapt import scrape
scrape()
context = {
"price": 123,
"mydata": data
}
return render(request, 'pricelis.html', context)