2017-12-29 15 views
0

저는 최근에 축구 등급 시스템 분석에 참여하고 있으며 scoreboard.com에서 데이터 소스를 얻었습니다.웹 페이지에서 깨진 영어 텍스트를 어떻게 수정할 수 있습니까?

일부 샘플 데이터를 구문 분석 한 후에 데이터를 읽을 수 없다는 것을 알게되었습니다. 깨진 영어 텍스트처럼 보입니다.

파이썬 코드 및 샘플 결과를 참조 하시겠습니까? 당신의 도움을 기대하고 있습니다.

감사합니다.

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) 

-

프리미어 League¬ZEE ÷ dYlOSQOD¬ZB ÷ 198¬ZY ÷ England¬ZC ÷ fZHsKRg9¬ZD ÷ t¬ZE ÷ 8Ai8InSt¬

- 결과의 샘플

답변

0

페이지가 JavaScript로 렌더링됩니다. 보고있는 텍스트는 페이지에 표시되지 않지만 해당 div에 적용된 CSS 특성 "display : none"을가집니다. 따라서 JavaScript가 페이지에서 사용하는 데이터를 배치하는 데 사용됩니다. 나는 결과를 원한다고 생각한다. 먼저 Selenium을 설치하려면 :

pip3 install selenium 

다음 드라이버를 다운로드하십시오. https://sites.google.com/a/chromium.org/chromedriver/downloads (Windows 또는 Mac을 사용하는 경우 원할 경우 헤드리스 크롬 버전 - 카나리아를 얻을 수 있습니다.) 경로에 드라이버를 넣으십시오.

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 

... 

당신은 Scraping Google Finance (BeautifulSoup)

에 다른 방법이 내 대답을 볼 수 있습니다 셀레늄을 사용하지 않으려면
관련 문제