2017-05-17 4 views
0

승객 용 웹 페이지를 긁어 내려했습니다. &화물 데이터입니다. 정상적인 데이터로 변환 할 수 없으며 웹 인코딩이 어려울 것으로 보입니다.파이썬에서 UTF8 인코딩 제거

내가 사용하는 코드는 다음과 같습니다 형식 연도 별 총에

from __future__ import print_function 
import requests 
import pandas as pd 
from bs4 import BeautifulSoup 
import urllib 
url = "https://www.faa.gov/data_research/passengers_cargo/unruly_passengers/" 
r = requests.get(url) 
soup = BeautifulSoup(r.content) 
links = soup.find_all("tbody") 

for link in links: 
    print(link.text) 

출력 1

이 인쇄됩니다. 그러나 목록에 추가하면 인코딩이 데이터를 파괴합니다. 당신은 출력 1에서

names = [] 
for link in links: 
    names.append(link.text) 
names = map(lambda x: x.strip().encode('ascii'), names) 
print(names) 

출력 2

원하는 출력이 나를 수행을위한 년 및 총해야 당신은 find_all이 같은 trtd을 사용할 수 있습니다

+5

'\ n'은 줄 바꿈으로 쉽게 바꿀 수 있습니다. –

+4

귀하의 데이터가 망가지는 것은 아닙니다. 귀하의 데이터는 괜찮습니다. 이전과 완전히 똑같은 문자를 포함합니다. 문자열을 직접 '인쇄'하면 어떻게 될지와 다르게 표시됩니다. – user2357112

+3

실제로 실행 한 코드는'map (lambda x : x.strip() .encode ('ascii'), names)'단계를 포함하지 않으며'encode ('ascii') 부분은 아마도 필요하지 않습니다. – user2357112

답변

1

분석 것을 볼 수있다 :

import requests 
from bs4 import BeautifulSoup 
import urllib 
url = "https://www.faa.gov/data_research/passengers_cargo/unruly_passengers/" 
r = requests.get(url) 
soup = BeautifulSoup(r.content) 
links = soup.find_all("tr") 

data = [] 
for link in links: 
    tds = link.find_all('td') 
    if tds: 
     data.append({'year':tds[0].text,'total':tds[1].text}) 

print(data) 

그것은 효과가있다.

희망 하시겠습니까?