Получить вывод сценария очистки селена в веб-браузере, используя django? - PullRequest
0 голосов
/ 24 апреля 2020

Я написал скрипт для удаления данных всех совпадений, отображаемых в этом URL https://web.bet9ja.com/Sport/OddsToday.aspx?IDSport=590

скрипт, который я написал, это scrape.py

import selenium.webdriver
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import mysql.connector
import pymysql
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# the relevant url
url = 'https://web.bet9ja.com/Sport/OddsToday.aspx?IDSport=590'

# the driver path
driver = webdriver.Chrome(r"c:/Users/SATYA/mysite/chromedriver")
driver.get(url)
driver.implicitly_wait(10) # seconds
buttons = WebDriverWait(driver,15).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.Event.ng-binding")))
for btn in range(len(buttons)):
    #elements re-assigned again to avoid stale.
    buttons = WebDriverWait(driver, 15).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.Event.ng-binding")))
    buttons[btn].click()
    headings= [item.text for item in driver.find_elements_by_css_selector("div.SECQ.ng-binding")]
    keys = [item.text for item in driver.find_elements_by_css_selector("div.SEOdd.g1")]
    values = [item.text for item in driver.find_elements_by_css_selector("div.SEOddLnk.ng-binding")]
    driver.execute_script("window.history.go(-1)")
    print(headings,keys,values)

когда я запускаю этот скрипт в консоли, используя python scrape.py, тогда я получаю вывод, т.е. динамически очищаю все значения совпадений, теперь я на самом деле пробовал этот скрипт в django views.py и хочу показать вывод на веб-странице для этого я написал код, подобный этому

views.py

from django.shortcuts import render
from django.http import HttpResponse
import selenium.webdriver
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import json
# the relevant url


# Create your views here.
def index(request):
    fi = fetch_imagery()
    return render(request, "index.html", {"scores": fi})


def fetch_imagery():
    url = 'https://web.bet9ja.com/Sport/OddsToday.aspx?IDSport=590'
    driver = webdriver.Chrome(r"c:/Users/my-project/mysite/chromedriver")
    driver.get(url)
    driver.implicitly_wait(10) # seconds
    buttons = WebDriverWait(driver,15).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.Event.ng-binding")))
    for btn in range(len(buttons)):
        buttons = WebDriverWait(driver, 15).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.Event.ng-binding")))
        buttons[btn].click()
        headings= [item.text for item in driver.find_elements_by_css_selector("div.SECQ.ng-binding")]
        keys = [item.text for item in driver.find_elements_by_css_selector("div.SEOdd.g1")]
        values = [item.text for item in driver.find_elements_by_css_selector("div.SEOddLnk.ng-binding")]
        driver.execute_script("window.history.go(-1)")
        print(headings,keys,values)
        score_list_list=[headings,keys,values]
        for score in score_list_list:
            return score_list_list

index. html:

{% block content %}
<center>
   <table border="1">
     <tr>
    <th>Section</th>
    <th>Key</th>
    <th>Value</th>

  </tr>
   {% for score_list in scores %}
    <tr>
        {% for score in score_list %}
            <td> {{ score }} </td>
        {% endfor %}
    </tr>
  {% endfor %}
</table>
</center>

при запуске django сервер обрабатывает только одно совпадение данных с URL-адреса и выводит выходные данные на веб-странице. Какую ошибку я допустил в своем коде, может ли кто-нибудь помочь мне в этом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...