파이썬 테이블의 내용 뽑아오기

조회수 2103회

먼저 간단한 구문을 통해서

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re

html = urlopen('http://blah blah.....')

bs = BeautifulSoup(html.read(), 'html.parser')

tx = bs.find_all('', 'td00')

아래와 같은 태그를 얻어 왔습니다.(대충 뽑아올 내용만 가져오는 것을 보여주는 코드)

<table id="td" class="td00">
<tbody>
<tr bgcolor="#CCCCCC">
    <td class="text04">No</td>
    <td class="text04">Product</td>
    <td class="text04">Stock</td>
    <td class="text04">Code</td>
    <td class="text04">Price</td>
    <td class="text04">HS.Price</td>
    <td class="text04">QTY</td>
</tr>
<tr bgcolor="#EEEEEE">
    <td class="text04"><font color="#3300CC">01</font></td>
    <td class="text04">2500DXG S LEFT<font color="#3300CC"></font></td>
    <td class="text04">Available</td>
    <td class="text04"><a href="#" onclick="window.open ('http://fservice.shimano.co.jp/part/pdf/03425.pdf', 'goodsInfos', 'resizable=yes, scrollbars=yes')" title="MakerParts">03425 0</a></td>
    <td class="text04">96,000</td>
    <td class="price_orange"><b>814,000</b></td>
    <td height="1" align="left"></td>
</tr>
    repeat one more like above <tr>
</tr>
</tbody>

위의 테이블에서 아래와 같은 내용으로 뽑아오길 원하는데 아무리 해봐도 다 실패로 돌아갑니다. 텍스트로 뽑아는 와지는데 구문이 깨어지거나, 또 앞선 질문에서 한분이 알려주신대로 해봐도 결국은 실패...

01 | 2500DXG S LEFT | Available | http://....pdf | 96,000 | 814,000
02 | 3000 S LEFT | Available | http://....pdf | 86,000 | 814,000
......

아래는 제가 사용해본 코드입니다. 초보라서 너무 어렵기만 합니다. 혹시 위의 내용처럼 뽑아오기 위해서 도움 좀 주실 분 계실까요? 약 1000여개의 페이지에서 동일한 내용을 뽑아와야하는데 일주일째 어렵군요. 페이지 돌면서 뽑아오는 것은 구글링을 통해서 가능할 것 같은데, 위의 테이블에서 제가 원하는 양식대로 뽑아오는게 계속 실패라서 도움을 좀 부탁드립니다.

# 에피소드 리스트를 만든다 >> 이것은 최종 출력할 때 이것을 돌면서 각 줄을 뿌려주기 위함이다.
episodes = []

# 에피소드의 내용이 담긴 태그들을 뽑아낸다.
table = bs.find('table', class_='td00')

for row in table.find_all('tr'):

    values = []

    for col in row.find_all('td'):
        text = col.get_text()
        rp_text = text.replace('(?<!\x0d)\x0a',' ')
        values.append(rp_text)

    if values:
        episodes.append(values)

del episodes[0]

for episode in episodes:
    print(episode)
  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)