サンプルコードを紹介します。
<テストページ>

<コード>
Jupyter NotebookWebScraping_test2 Last Checkpoint: a minute ago (autosaved)
Python 3
In [3]:
from bs4 import BeautifulStoneSoup
import requests
import pandas as pd
from pandas import Series, DataFrame
url = 'http://***/webscraping/test.html'
result = requests.get(url)
c = result.content
soup = BeautifulStoneSoup(c)
In [4]:
summary = soup.find("div", {'class':'list-land','id':'content'})
tables = summary.find_all('table')
In [5]:
# データを格納するためのリストです。
data = []
# テーブルから行をすべて探し出します。
rows = tables[0].find_all('tr')
# 行から、それぞれのcellを取り出して画面に表示しつつ、dataに格納します。
for tr in rows:
cols = tr.find_all('td')
# textを探し出します。
for td in cols:
text = td.find(text=True)
text = text.replace('100> ','')
print(text)
data.append(text)
column 1
column 2
column 3
column 4
column 5
1-1
1-2
1-3
1-4
1-5
2-1
2-2
2-3
2-4
2-5
In [6]:
data[0]
Out[6]:
'column 1 '
In [18]:
clmn1 = []
clmn2 = []
clmn3 = []
clmn4 = []
clmn5 = []
i = 0
while i < 3:
clmn1.append(data[0+i*5])
clmn2.append(data[1+i*5])
clmn3.append(data[2+i*5])
clmn4.append(data[3+i*5])
clmn5.append(data[4+i*5])
i +=1
#date.append(data[0])
#date.append(data[5])
#date.append(data[10])
In [19]:
clmn1
Out[19]:
['column 1 ', '1-1 ', '2-1 ']
In [20]:
clmn2
Out[20]:
['column 2 ', '1-2 ', '2-2 ']
In [32]:
# まずはそれぞれをSeriesにします。
clmn1 = Series(clmn1)
clmn2 = Series(clmn2)
clmn3 = Series(clmn3)
clmn4 = Series(clmn4)
clmn5 = Series(clmn5)
# 連結してDataFrameにします。
test = pd.concat([clmn1, clmn2, clmn3, clmn4, clmn5], axis = 1)
# 列名を付けて置きましょう。
test.columns = ['col1','col2','col3','col4','col5']
In [33]:
test
Out[33]:
col1 col2 col3 col4 col5
0 column 1 column 2 column 3 column 4 column 5
1 1-1 1-2 1-3 1-4 1-5
2 2-1 2-2 2-3 2-4 2-5
<結果>
