如何从网页上修复损坏的英文文本?

时间:2017-12-29 15:43:53

标签: python parsing encoding python-requests

我最近正在研究足球评级系统,并从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÷dYlOSQOD-ZB÷198ZY÷EnglandZC÷fZHsKRg9ZZ÷tZZ÷8Ai8InSt¬

1 个答案:

答案 0 :(得分:0)

页面以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)

的回答