无法使用beautifulsoup和请求进行Web爬网

时间:2020-04-10 11:19:30

标签: python web-scraping beautifulsoup

我正在尝试使用bs4和来自此网站https://web.bet9ja.com/Sport/SubEventDetail?SubEventID=76512106的请求来抓取前两个部分的值,即1 * 2和DOUBLECHANCE部分的值 我写的代码是:

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 个答案:

答案 0 :(得分:1)

该页面是通过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']

答案 1 :(得分:0)

尝试:

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