2016-08-12 3 views
0
from bs4 import BeautifulSoup 
import urllib2 

url = 'http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3_en.php?block_no=47401&view=1' 
html = urllib2.urlopen(url).read()   
soup = BeautifulSoup(html) 
table = soup.find_all('table', class_='data2_s') 
rows = table.find_all('tr') 
print rows 

rows = table.find_all('tr') 
AttributeError: 'ResultSet' object has no attribute 'find_all' 

Я хочу, чтобы таблица была в CSV-файле. Как это сделать?BeautifulSoup: объект ResultSet не имеет атрибута 'find_all'

Это таблица:

[<table class="data2_s"><caption class="m">WAKKANAI\xa0\xa0\xa0WMO Station ID:47401\xa0Lat\xa045<sup>o</sup>24.9'N\xa0\xa0Lon\xa0141<sup>o</sup>40.7'E</caption><tr><th scope="col">Year</th><th scope="col">Jan</th><th scope="col">Feb</th><th scope="col">Mar</th><th scope="col">Apr</th><th scope="col">May</th><th scope="col">Jun</th><th scope="col">Jul</th><th scope="col">Aug</th><th scope="col">Sep</th><th scope="col">Oct</th><th scope="col">Nov</th><th scope="col">Dec</th><th scope="col">Annual</th></tr><tr class="mtx" style="text-align:right;"><td style="text-align:center">1938</td><td class="data_0_0_0_0">-5.2</td><td class="data_0_0_0_0">-4.9</td><td class="data_0_0_0_0">-0.6</td><td class="data_0_0_0_0">4.7</td><td class="data_0_0_0_0">9.5</td><td class="data_0_0_0_0">11.6</td><td class="data_0_0_0_0">17.9</td><td class="data_0_0_0_0">22.2</td><td class="data_0_0_0_0">16.5</td><td class="data_0_0_0_0">10.7</td><td class="data_0_0_0_0">3.3</td><td class="data_0_0_0_0">-4.7</td><td class="data_0_0_0_0">6.8</td></tr>\n<tr class="mtx" style="text-align:right;"><td style="text-align:center">1939</td><td class="data_0_0_0_0">-7.5</td><td class="data_0_0_0_0">-6.6</td><td class="data_0_0_0_0">-1.4</td><td] 
+1

Неясно, в чем проблема ... «Не работает» недостаточно информации – Totem

+0

@Totem Эй, я получил AttributeError, как упоминалось в вопросе. – jean

+0

Хорошо, я думаю, что ошибка говорит вам, что не так .. ResultSet более чем вероятно содержится в 'rows' ... – Totem

ответ

0

Попробуйте это:

rows = table[0].find_all('tr') 

С find_all появляется вернуть Python list, вы пытаетесь вызвать find_all на list, который не имеет такой метод.

Чтобы получить полученный вами список (rows) в формате CSV .. хорошо, это зависит. Если вы просто хотите его на экране, вы можете сделать:

','.join(rows) 

Если вы хотите его в файл, вам нужно будет открыть файл и записать эту строку в него. Но есть также модули Python, которые занимаются созданием содержимого CSV. На самом деле это другой вопрос.

+0

, вам может быть интересно здесь: http://stackoverflow.com/questions/38917958/convert-html-into-csv – jean

+0

вам может быть интересно здесь: http: //stackoverflow.com/questions/38917958/convert-html-into-csv – jean

+0

Вы должны использовать 'find', если вам нужен один тег, find_all возвращает все совпадения –

Смежные вопросы