我最近正在分析足球评级系统,并从scoreboard.com获得数据源。
在解析了一些示例数据后,意识到数据不可读。好像是在破碎的英文文本中。
你会参考下面的python代码和示例结果吗?期待看到你的帮助。
谢谢。
import requests
import lxml.html
import cssselect
from bs4 import BeautifulSoup
url = requests.get('https://www.scoreboard.com/soccer/england/premier-league-2016-2017/results/')
urlshow = url.text
print(urlshow)
- 结果样本 -
英超联赛ZEE Y dYlOSQODZZ÷198ZY÷EnglandZC÷fZHsKRg9ZZ÷tZZ÷8Ai8InSt¬
该页面以JavaScript呈现。您看到的文本不会显示在页面上,但是CSS属性“display:none”应用于它所在的div。因此它不会显示,只是用于将JavaScript使用的数据放在页面上。我想你想要的结果。为了让他们首先安装Selenium:
pip3 install selenium
然后得到一个司机https://sites.google.com/a/chromium.org/chromedriver/downloads(如果你在Windows或Mac上,你可以获得Chrome的无头版本 - Canary,如果你愿意的话)把驱动程序放在你的路上。
from bs4 import BeautifulSoup
from selenium import webdriver
import unicodedata
browser = webdriver.Chrome()
url = ('https://www.scoreboard.com/soccer/england/premier-league-2016-2017/results/')
browser.get(url)
html_source = browser.page_source
browser.quit()
soup = BeautifulSoup(html_source, 'lxml')
for tr in soup.find_all('tr', {'class': 'stage-finished'}):
for td in tr.find_all('td'):
print (unicodedata.normalize("NFKD", td.text))
输出:
May 21, 03:00 PM
Arsenal
Everton
3 : 1
May 21, 03:00 PM
Burnley
West Ham
1 : 2
May 21, 03:00 PM
Chelsea
Sunderland
5 : 1
...
如果您不想使用Selenium,您可以使用其他方法查看我对Scraping Google Finance (BeautifulSoup)的回答