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

问题描述 投票:0回答:1

我最近正在分析足球评级系统,并从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¬

python parsing encoding python-requests
1个回答
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)的回答

© www.soinside.com 2019 - 2024. All rights reserved.