我尝试使用beautifulsoup在以下网站上获取每场比赛的赔率:
https://danskespil.dk/oddset/sports/category/990/counter-strike-go/matches
目标是最终生成某种文本文件,其中包含以下内容:
第1场,第1组,第1组获胜的几率,第2组,第2组获胜的几率
第二场,第1组,第1组获胜的几率,第2组,第2组获胜的几率
等等
我是新来的,所以事情已经在一个非常初级的水平上出了问题。我的方法是“遍历”html树,直到到达一个div标记,在那里我可以看到包含所有匹配项。在使用^{cl1}命中div标记之前,这种方法工作得很好$
This picture is for clarification.
下面是我的代码,m1和m2都不起作用。Python只响应none
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^{cl2}$
问题出在
r = res.get('https://danskespil.dk/oddset/sports/category/990/counter-strike-go/matches').text
的那一行Python请求库只是将您的HTTP/HTTPS请求发送到服务器并获取原始html,它不能帮助您加载更多的资源,如图片和脚本,这意味着某些元素是在javascript脚本中操作的(例如,创建元素、设置类名并插入DOM树):
另一个示例是,如果通过请求
GET
main.html,它不会加载main.js
,并且divt1
的类不会设置为sgd-wrapper
您需要做的是使用headless Chrome(比如
google-chorme headless
启动Chrome)并使用chromeapi钩住页面加载事件,然后转储整个内容相关问题 更多 >
编程相关推荐