怎样修复来自网页的破碎的英文文本?

2024-10-03 23:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近在分析足球评分系统,从记分板.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)

--结果示例--

Premier League¬ZEE÷dYlOSQOD¬ZB÷198¬ZY÷England¬ZC÷fZHsKRg9¬ZD÷t¬ZE÷8Ai8InSt¬


Tags: 数据代码文本importcomurl示例系统
1条回答
网友
1楼 · 发布于 2024-10-03 23:25:21

页面以JavaScript呈现。您看到的文本不显示在页面上,但具有CSS属性“显示:无“应用于它所在的分区。所以它没有显示,只是用来将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)的回答

相关问题 更多 >