22

次のようなテーブル行がたくさんあります。

<tr>
    <td>100</td>
    <td>200</td>
    <td><input type="radio" value="123599"></td>
</tr>

次のように繰り返します。

table = BeautifulSoup(response).find(id="sometable") # Make soup.

for row in table.find_all("tr")[1:]: # Find rows.
    cells = row.find_all("td") # Find cells.

    points = int(cells[0].get_text())
    gold = int(cells[1].get_text())
    id = cells[2].input['value']

    print id

エラー:

File "./script.py", line XX, in <module>
id = cells[2].input['value']
TypeError: 'NoneType' object has no attribute '__getitem__'

入力値を取得するにはどうすればよいですか? 私は正規表現を使いたくありません。

4

2 に答える 2

56
soup = BeautifulSoup(html)
try:
    value = soup.find('input', {'id': 'xyz'}).get('value')
except Exception as e:
    print("Got unhandled exception %s" % str(e))
于 2014-08-13T10:48:09.713 に答える
-3

セル内の <input> 要素を見つけたいので、次のようにセルで find/find_all を使用する必要があります。

cells[2].find('input')['value']
于 2012-07-27T15:55:34.030 に答える