当您使用bing搜索并搜索 fussball bundesliga时, bing将显示当前周和下周的最后一周。比赛通常在周末进行。如果实际周的比赛都没有参加,那么你将获得每支球队获胜,失利或平局的概率。
我已经可以从页面中获取不需要展开的结果/预测,因为它们在加载的html中。要看到更多,我需要以某种方式扩展该视图(可以通过图片中的圆圈看到)。在人工控制的浏览器中,这很容易。
问题是单击该箭头会发出执行javascript的onclick()
事件。所以我认为使用有javascript支持的东西可能有所帮助。直到现在我无法得到丢失的游戏,因为我无法以编程方式单击该箭头并加载页面。这是我的代码:
from bs4 import BeautifulSoup
from bs4.element import NavigableString
import requests
import sys
from lxml import html
import spynner
from time import sleep
import dryscrape
from bs4 import BeautifulSoup
if __name__ == "__main__":
url = "https://www.bing.com/search?q=fussball+bundesliga"
sess = dryscrape.Session()
sess.visit(url)
response = sess.body()
dryscrype_soup = BeautifulSoup(response,"lxml")
#test = dryscrype_soup.findAll("div",{"id":"tab_3_dynamic"})
dryscrape_actual_week = dryscrype_soup.findAll("div",{"id":"sp-full-29"})
dryscrape_text = [i for i in dryscrype_soup.recursiveChildGenerator() if type(i) == NavigableString]
dryscrape_all_text = dryscrape_actual_week[0].findAll(text=True)
browser = spynner.Browser(debug_level=spynner.DEBUG)
browser.show(True,True)
browser.load(url)
browser.runjs("sj_evt.fire('ExpandClick', '29', '');",True)
#browser.wk_click(".//*[@id='sp-expandTop-more-29']", wait_load=True)
#browser.wk_click_ajax(selector=".//*[@id='sp-expandTop-more-29']")
browser.wait_load()
markup = browser._get_html()
spynner_soup = BeautifulSoup(markup,"lxml")
spynner_actual_week = spynner_soup.findAll("div",{"id":"sp-full-29"})
spynner_all_text = spynner_actual_week[0].findAll(text=True)
不要打扰进口,我已经尝试了几件事。我试过microsofts azure api,但这只提供链接,而不是这些预测。当您查看已解析的html或变量spynner_all_text
和dryscrape_all_text
时,您会注意到它们仅包含非扩展网页的结果。希望有人可以帮助我。