Я получаю суп из этого:
soup = BeautifulSoup(html, 'lxml').find("tbody").find_all("tr")
И затем объект soup содержит несколько похожих объектов tr>, как это:
<tr>
<td class = "table">115</td>
<td>204</td>
<td><div><span class = "flag-icon"></span> United States <span> NY </span></div></td>
<td>brown</td>
<td>up</td>
<td class = "table">groove</td>
</tr>
Итак, моя цель - получить вырезанные текстовые данные только из 1,2,4 и собрать их в небольшой список. Как это:
[115, 204, 'brown']
И после того, как я получил все маленькие списки от всех, я должен добавить их все в большой список. Как это:
[[115, 204, 'brown'], [32, 12, 'red'] ... [42, 87, 'yellow']]
Честно говоря, я использовал два цикла for и нарезал необходимые небольшие элементы списка, чтобы добавить большой список. Но я полагаю, что есть гораздо лучший и более простой способ сделать это.
Может быть, у вас есть идеи, как использовать мощные возможности BeautifulSoup в моем случае?
@nandal Спасибо, я только что обновил свой пост примерами.






Попробуйте следующее: -
rows = BeautifulSoup(html, 'lxml').find("tbody").find_all("tr")
bigList = []
for row in rows:
tds = row.find_all("td")
bigList.append([tds[0].text, tds[1].text, tds[3].text])
Большое спасибо, Нандал. Ваше решение лучше моего. Только 1 цикл вместо 2, без дополнительных переменных и нет необходимости удалять элементы в небольших списках.
Не могли бы вы уточнить, что вы подразумеваете под маленьким списком и большим списком? Можете ли вы вставить остальную часть кода для логики?