1

他の多くの質問を調べた後、私は立ち往生しています。私のコードは現在、データを名前付きの行に分割していますが、含まれているテキストだけでなく行全体を返しています。次の行から ASCO VALVE MFG., INC. を探しています:行からそのテキスト。

<td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">****ASCO VALVE MFG., INC.****</font></td>

私の入力は次のようになります:

 <tr>
        <td align="center" id="ColHead_0"><font size="3" face="Arial,Helvetica,sans-serif"><b>WH</b></font></td>
        <td align="center" id="ColHead_1"><font size="3" face="Arial,Helvetica,sans-serif"><b>OrderNo.</b></font></td>
        <td align="center" id="ColHead_2"><font size="3" face="Arial,Helvetica,sans-serif"><b>Cust.</b></font></td>
        <td align="left" id="ColHead_3"><font size="3" face="Arial,Helvetica,sans-serif"><b>Customer Name</b></font></td>
        <td align="center" id="ColHead_4"><font size="3" face="Arial,Helvetica,sans-serif"><b>Item Number</b></font></td>
        <td align="center" id="ColHead_5"><font size="3" face="Arial,Helvetica,sans-serif"><b>Item Description 1</b></font></td>
        <td align="center" id="ColHead_6"><font size="3" face="Arial,Helvetica,sans-serif"><b>Item Description 2</b></font></td>
        <td align="center" id="ColHead_7"><font size="3" face="Arial,Helvetica,sans-serif"><b>Qty</b></font></td>
        <td align="center" id="ColHead_8"><font size="3" face="Arial,Helvetica,sans-serif"><b>S/N </b></font></td>
      </tr>

データ行は次のとおりです。

<tr>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">09</font></td>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">92427</font></td>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">20668</font></td>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">ASCO VALVE MFG., INC.</font></td>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">EQPRAN77333</font></td>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">RANPAK FILLPAK TT</font></td>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">S/N 50742543</font></td>
     <td nowrap="nowrap" align="right"><font size="3" face="Arial,Helvetica,sans-serif">1</font></td>
     <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">50742543</font></td>
</tr>

私のコードは現在、データを名前付きの行に分割していますが、html 行全体を返しています。

soup1 = BeautifulSoup(output, "html.parser")
find_string = soup1.body.find_all(text="-")
Customer_No = []
Serial_No = []
rows = soup1.find_all("tr")
title = rows[0]
headers = rows[1]
datarows = rows[2:]

for row in datarows :
    if len(row)> 7:
        WHID = row.contents[1]
        ORNO = row.contents[3]
        CSNO = row.contents[5]
        CSNM = row.contents[7]
        ITNO = row.contents[9]
        DESC = row.contents[11]
        DESC2 = row.contents[13]
        QTY = row.contents[15]
        SN = row.contents[17]
        print ITNO
    else:
        continue

私が最終的に試みているのは、2番目のCSVファイルと一致する[CSNOのテキスト]と[SNのテキスト]のペアを推測する辞書です。すべてが理にかなっていることを願っています。

4

1 に答える 1

3

.text属性を使用して、各要素のテキストを抽出できます。次の行に沿った何かが、アイデアを得るのに役立ちます。

from bs4 import BeautifulSoup

content = '''
<tr>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">09</font></td>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">92427</font></td>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">20668</font></td>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">ASCO VALVE MFG., INC.</font></td>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">EQPRAN77333</font></td>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">RANPAK FILLPAK TT</font></td>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">S/N 50742543</font></td>
    <td nowrap="nowrap" align="right"><font size="3" face="Arial,Helvetica,sans-serif">1</font></td>
    <td nowrap="nowrap" align="left"><font size="3" face="Arial,Helvetica,sans-serif">50742543</font></td>
</tr>'''

soup = BeautifulSoup(content, 'html')
rows = soup.find_all('tr')
for row in rows:
    td_cells = soup.find_all('td')
    for td_cell in td_cells:
        print td_cell.text

出力

09
92427
20668
ASCO VALVE MFG., INC.
EQPRAN77333
RANPAK FILLPAK TT
S/N 50742543
1
50742543

テキストを保存するには、次のようにします。

soup = BeautifulSoup(content, 'html')
rows = soup.find_all('tr')
table_text = []
for row in rows:
    row_text = []
    td_cells = soup.find_all('td')
    for td_cell in td_cells:
        row_text.append(td_cell.text)
    table_text.append(row_text)
于 2016-01-20T14:23:57.353 に答える