- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试抓取此页面:https://1xbet.cm/en/line/Football/1536237-FIFA-World-Cup-2018/因为这是足球赔率,但是当我尝试通过 BeautifulSoup 查找相关类(class)时,我没有得到任何返回。有人可以解释为什么我没有找到任何东西吗?
class GetData():
def __init__(self, url):
self.url = url
r = requests.get(url)
self.soup = BeautifulSoup(r.text, "lxml")
def do_smth(self):
content = self.soup.find_all("div", class_="bets_content")
print(content)
url = 'https://1xbet.cm/en/line/Football/1536237-FIFA-World-Cup-2018/'
gd = GetData(url)
gd.do_smth()
最佳答案
我认为 BeautifulSoup
无法帮助您从该网站抓取数据,因为该网站使用 VueJS
作为消费的 JavaScript
框架网站 API/Web 服务以获得最终模板。
因此,为了获取数据,您可以直接解析 API/Web 服务并获取您需要的内容。
以下是使用 requests
和 re
模块的示例:
import re
import requests
class GetData:
def __init__(self):
self.main_url = 'https://1xbet.cm/en/line/Football/1536237-FIFA-World-Cup-2018/'
self.headers = {
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',
'referer': 'https://1xbet.cm/en/line/Football/1536237-FIFA-World-Cup-2018/',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'
}
def read(self, url):
with requests.get(url, headers=self.headers) as response:
if response.status_code == 200:
return response.json()
else:
raise Exception('Got error: {}'.format(response.status_code))
def pretty_print(self, msg, data):
print(msg + ' :')
print(data)
print('#' * 40)
def get_teams_id(self, url):
teams_regex = re.findall(r'/(\d+)-', self.main_url)
if teams_regex:
teams_id = teams_regex[0]
return url.format(teams_id)
else:
raise ValueError("Cannot parse Teams ID")
def get_teams_info(self, pretty_print=False):
teams_url = 'https://1xbet.cm/LineFeed/GetChampTeams?id={}&lng=en'
valid_url = self.get_teams_id(teams_url)
data = self.read(valid_url)
if pretty_print:
values = data.get('Value', [])
teams = [values[k:k+2] for k in range(0, len(values), 2)]
teams_pretty = '\n'.join(' VS '.join(map(
lambda x: '{}({})'.format(x.get('N'), x.get('I')), k)
) for k in teams
)
self.pretty_print('Teams Info', teams_pretty)
return data
def get_teams_cotes(self, pretty_print=False):
cotes_url = 'https://1xbet.cm/LineFeed/Get1x2_VZip?champs={}&count=50&lng=en&tf=1500000&mode=4'
valid_url = self.get_teams_id(cotes_url)
data = self.read(valid_url)
if pretty_print:
values = data.get('Value')
for k in values:
msg = '{}\n{} VS {}\nCotes: [{}, ..., {}]'.format(
k.get('L'),
k.get('O1'),
k.get('O2'),
k.get('E')[0],
k.get('E')[-1]
)
self.pretty_print('Events & Cotes', msg)
return data
if __name__ == '__main__':
app = GetData()
_ = app.get_teams_info(pretty_print=True)
_ = app.get_teams_cotes(pretty_print=True)
如果您运行此代码,您将得到与此类似的结果:
Teams Info :
Belgium(12609) VS Croatia(12739)
England(12763) VS France(12771)
########################################
Events & Cotes :
FIFA World Cup 2018
France VS Belgium
Cotes: [{'T': 1, 'G': 1, 'C': 2.58}, ..., {'T': 181, 'G': 19, 'C': 2.125}]
########################################
Events & Cotes :
FIFA World Cup 2018
Croatia VS England
Cotes: [{'T': 1, 'G': 1, 'C': 3.64}, ..., {'T': 181, 'G': 19, 'C': 1.805}]
########################################
现在轮到您解析数据并获取您需要的内容了。请善待网站。
关于python - soup.find 找不到 div 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256334/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!