【发布时间】:2021-01-25 15:31:31
【问题描述】:
我尝试使用 beautifulsoup 来获取以下网站上每场比赛的赔率:
https://danskespil.dk/oddset/sports/category/990/counter-strike-go/matches
我们的目标是最终得到某种包含以下内容的文本文件:
Match1, Team1, team1 获胜赔率, Team2, team2 获胜赔率
Match2, Team1, team1 获胜赔率, Team2, team2 获胜赔率
等等……
我是 beautifulsoup 的新手,所以事情在非常初级的时候就已经出错了。我的方法是“遍历”html 树,直到我到达一个 div 标签,在那里我可以看到所有匹配项都包含在内。这在使用 class="sgd-wrapper" 命中 div 标签之前效果很好,下面有一个链接可以查看图片以进行说明。
This picture is for clarification.
以下是我的代码,m1 和 m2 都不起作用。 Python 只是没有响应。
from bs4 import BeautifulSoup as bs
import requests as res
#Load the webpage content
r = res.get('https://danskespil.dk/oddset/sports/category/990/counter-strike-go/matches').text
#Convert to a beautiful soup object
soup = bs(r,'lxml')
m1 = soup.find("div", attrs={"id": "wrapper"}).find("div", attrs={"class": "page-box"}).find("div", attrs={"class": "page-area"}).find("div", attrs={"id": "oddset-nashville"}).find("div", attrs={"class": "sgd-wrapper"})
m2 = soup.find("div", attrs={"class": "sgd-wrapper"})
如果我删除 m1 中的最后一个查找或重新定义 m2
m1 = soup.find("div", attrs={"id": "wrapper"}).find("div", attrs={"class": "page-box"}).find("div", attrs={"class": "page-area"}).find("div", attrs={"id": "oddset-nashville"})
m2 = soup.find("div", attrs={"id": "oddset-nashville"})
然后我得到响应
print(m1)
<div data-digital-portal-loader-url="https://assets.sb.danskespil.dk/front-end/digitalPortal.js?noCache=20201011001813" id="oddset-nashville"></div>
谁能解释一下为什么这个 div class="sgd-wrapper" 如此特别?
【问题讨论】:
-
页面是动态生成的,所以看看使用 selenium 来 scape 这个站点。不要使用 Inspect 查看具有不同 HTML 的 View Source。
标签: python html web-scraping beautifulsoup python-requests