Проблема очистки веб-страницы с прокруткой с помощью BeatifulSoup Python - PullRequest
0 голосов
/ 29 января 2020

У меня проблема при попытке удалить информацию об этой странице .

Вот мой код: '' '

import requests
from bs4 import BeautifulSoup


request = requests.get("https://www.aiscore.com/basketball/20200128")

page = request.content
soup = BeautifulSoup(page, 'html.parser')
print(soup.prettify())

matchs = soup.findAll("div", {"class":"list"})

for match in matchs:

    hour = match.find("span", {"class":"fs-12 flex-1 text-center"})
    hour = hour.text

    status = match.find("div", {"class":"fs-12 color-999 flex-1 text-center"})
    status = status.text

    teams = match.findAll("div", {"class":"w-o-h"})
    i = 1
    for team in teams:
        if i == 1:
            t1 = team.text
        elif i == 2:
            t2 = team.text
        else:
            print("+ de 2 équipes dans le match")
        i += 1

    scores = match.findAll("div", {"class":"flex align-center justify-center fs-12 color-999 w-bar-100 flex-1"})
    i = 1
    for score in scores:
        scs_qtps = score.findAll("div", {"class":"flex-1 text-center isVisible"})
        if i == 1:
            k = 1
            for sc_qtp in scs_qtps:
                if k == 1:
                    sc_qt1_t1 = sc_qtp.text
                elif k == 2:
                    sc_qt2_t1 = sc_qtp.text
                elif k == 3:
                    sc_qt3_t1 = sc_qtp.text
                elif k == 4:
                    sc_qt4_t1 = sc_qtp.text
                else :
                    print("plus de 4 quart tps")
                k += 1
            sc_final_t1 = score.find("div", {"class":"flex-1 text-center"})
            sc_final_t1 = sc_final_t1.text
        elif i == 2:
            k = 1
            for sc_qtp in scs_qtps:
                if k == 1:
                    sc_qt1_t2 = sc_qtp.text
                elif k == 2:
                    sc_qt2_t2 = sc_qtp.text
                elif k == 3:
                    sc_qt3_t2 = sc_qtp.text
                elif k == 4:
                    sc_qt4_t2 = sc_qtp.text
                else :
                    print("plus de 4 quart tps")
                k += 1
            sc_final_t2 = score.find("div", {"class":"flex-1 text-center"})
            sc_final_t2 = sc_final_t2.text
        i += 1

    odds = match.findAll("div", {"style":"height: 19px; line-height: 19px; color: rgb(102, 102, 102);"})
    i = 1
    for odd in odds:
        if i == 1:
            odd_t1 = odd.text
        elif i == 2:
            odd_t2 = odd.text
        i += 1

    print(hour, status, t1, t2)
    print(sc_qt1_t1, sc_qt2_t1, sc_qt3_t1, sc_qt4_t1, "%t", sc_final_t1)
    print(sc_qt1_t2, sc_qt2_t2, sc_qt3_t2, sc_qt4_t2, "%t", sc_final_t2)
    print("1 :", odd_t1, "; 2 :", odd_t2)

' ''

Я хочу удалить все оценки, но есть проблема: я не могу получить доступ ко всем данным на странице html. Действительно, вся информация, которую я хочу удалить, находится в этом div:

<div class="vue-recycle-scroller scroller page-mode direction-vertical"
/div>

, но когда я печатаю страницу html с print(soup.prettify()), в этом div нет никакого содержимого, кроме !-- --.

Итак, мой вопрос: как я могу получить доступ к информации, которая «находится» в этом div? Я открыт для всех видов ответов (может быть, я должен использовать Selenium для сбора такого рода информации?)

Большое спасибо!

Извините за мои основы c engli sh

1 Ответ

0 голосов
/ 29 января 2020

Поскольку мы не можем видеть ваш скрипт, поэтому не можем сказать, но я думаю, вам, возможно, придется проверить имя вашего класса еще раз. если вы удаляете какой-либо скрипт, то лучше использовать ctrl + shift + C, а затем навести указатель мыши на скрипт, который вы хотите записать. Это поможет вам получить правильный класс. надеюсь, это поможет.

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