Не в состоянии делать веб-скрэппинг с использованием Beautifulsoup и запросов - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь очистить значения первых двух разделов, т. Е. Значения разделов 1 * 2 и DOUBLECHANCE, используя bs4 и запросы с этого веб-сайта. https://web.bet9ja.com/Sport/SubEventDetail?SubEventID=76512106 Код, который я написал:

import bs4 as bs
import urllib.request

source = urllib.request.urlopen('https://web.bet9ja.com/Sport/SubEventDetail?SubEventID=76512106')
soup = bs.BeautifulSoup(source,'lxml')

for div in soup.find_all('div', class_='SEItem ng-scope'):
    print(div.text)

когда я бегу, я ничего не получаю, пожалуйста, помогите мне

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Страница загружается через JavaScript, поэтому у вас есть 2 варианта. или использовать selenium или позвонить на Direct API.

Вместо того, чтобы использовать Selenium, я позвонил API напрямую и получил необходимую информацию.

Можно найти дальнейшее объяснение XHR & API < как только вы нажмете здесь.

import requests

data = {
    'IDGruppoQuota': '0',
    'IDSottoEvento': '76512106'
}


def main(url):
    r = requests.post(url, json=data).json()
    count = 0
    for item in r['d']['ClassiQuotaList']:
        count += 1
        print(item['ClasseQuota'], [x['Quota']
                                    for x in item['QuoteList']])
        if count == 2:
            break


main("https://web.bet9ja.com/Controls/ControlsWS.asmx/GetSubEventDetails")

Вывод:

1X2 ['3.60', '4.20', '1.87']
Double Chance ['1.83', '1.19', '1.25']
0 голосов
/ 10 апреля 2020

Попробуйте:

import bs4 as bs
import urllib.request
import lxml
source = urllib.request.urlopen('https://web.bet9ja.com/Sport/SubEventDetail?SubEventID=76512106')
soup = bs.BeautifulSoup(source,'lxml')
a = soup.find_all('div')
for i in a:
    try:
        print(i['class'])
    except:
        pass
        try:
            sp = i.find_all('div')
            for j in sp:
                print(j['class'])
        except:
            pass

Это поможет вам найти доступные классы в теге <div>.
Вы ничего не получите, когда указанный вами class не существует. Это происходит потому, что многие сайты генерируются динамически, и запросы не могут их получить. В этих случаях нам нужно использовать selenium.

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