Я пытаюсь очистить данные с сайта, на котором используется большое количество таблиц. Я изучаю документацию beautifulsoup, а также здесь, в stackoverflow, но я все еще потерян.BeautifulSoup соскабливает вложенные таблицы
Вот указанная таблица:
<form action="/rr/" class="form">
<table border="0" width="100%" cellpadding="2" cellspacing="0" align="left">
<tr bgcolor="#6699CC">
<td valign="top"><font face="arial"><b>Uesless Data</b></font></td>
<td width="10%"><br /></td>
<td align="right"><font face="arial">Uesless Data</font></td>
</tr>
<tr bgcolor="#DCDCDC">
<td> <input size="12" name="s" value="data:" onfocus=
"this.value = '';" /> <input type="hidden" name="d" value="research" />
\t \t \t \t
<input type="submit" value="Date" /></td>
<td width="10%"><br /></td>
</tr>
</table>
</form>
<table border="0" width="100%">
<tr>
<td></td>
</tr>
</table><br />
<br />
<table border="0" width="100%">
<tr>
<td valign="top" width="99%">
<table cellpadding="2" cellspacing="0" border="0" width="100%">
<tr bgcolor="#A0B8C8">
<td colspan="6"><b>Data to be pulled</b></td>
</tr>
<tr bgcolor="#DCDCDC">
<td><font face="arial"><b>Data to be pulled</b></font></td>
<td><font face="arial"><b>Data to be pulled</b></font></td>
<td align="center"><font face="arial"><b>Data to be pulled
</b></font></td>
<td align="center"><font face="arial"><b>Data to be pulled
</b></font></td>
<td align="center"><font face="arial"><b>Data to be pulled
</b></font></td>
<td align="center"><font face="arial"><b>Data to be pulled
</b></font></td>
</tr>
<tr>
<td>Data to be pulled</td>
<td align="center">Data to be pulled</td>
<td align="center">Data to be pulled</td>
<td align="center">Data to be pulled</td>
<td align="center"><br /></td>
</tr>
\t </table>
\t </td>
\t </tr>
</table>
Есть немало столов, и ни один из них действительно имеют отличительные идентификаторы или метки. Моя последняя попытка была:
table = soup.find('table', attrs={'border':'0', 'width': "100%'})
Что вытаскивает только первый пустой стол. Я чувствую, что ответ прост, и я над этим думаю.
В чем проблема? Если он просто находит все 4 таблицы с (надмножеством) этих attrs, используйте 'find_all' вместо' find'. Это все, что ты хотел? – abarnert
Между тем, если каждая таблица на странице имеет те же 'border' и' width', эти attrs на самом деле не делают вам ничего хорошего. Это так же хрупко, как если бы вы просто делали 'soup.find_all ('table')'. И на самом деле нет хорошего способа стать кем-то неудобным на странице стиля 90-х годов. Вы можете попытаться сделать причудливые вещи, как только найти 'table's, которые находятся под какой-либо другой определенной цепочкой тегов и так далее, и надеяться, что они никогда не изменят макет страницы, но обычно это не стоит делать, если простая вещь возвращает правильные результаты. – abarnert