我正在尝试使用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)
我跑步时什么也没得到,请任何人帮助我
答案 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
。