清单中的BeautifulSoup find_all

时间:2019-07-28 21:11:28

标签: python beautifulsoup

我尝试两次使用BeautifulSoup find_all命令。我第一次使用它来查找所有表标签。然后,我在循环中添加了一些if语句,以缩小我添加到列表中的表标签的数量。最后,我尝试在列表上使用find_all命令,并收到错误“'列表'对象没有属性'查找'”。

我理解该错误基本上是说find_all无法浏览列表,但是我想不出任何其他方式来整理我的数据。无论如何,我可以解决该错误或尝试其他任何命令。

result = requests.get("https://www.sec.gov/Archives/edgar/data/861838/000095013509003622/0000950135-09-003622.txt")
src = result.content
soup = BeautifulSoup(src, "html.parser")

table = soup.find_all("table")
tbl = len(table)

sort1 = []

i = 0
while i < tbl - 1:
    i = i + 1
    if ("sale" in table[i].text) or ("revenue" in table[i].text):
        if "expense" in table[i].text:
            if "income" in table[i].text:
                sort1.append(table[i].text)

# error shows up here
td = sort1.find_all("td")

2 个答案:

答案 0 :(得分:0)

尝试一下:

td = []

i = 0
for tag in table:
    if ("sale" in tag.text) or ("revenue" in tag.text):
        if ("expense" in tag.text) and ("income" in tag.text):
            td.append(table[i].find("td"))

它将找到的所有<td>添加到列表中。

答案 1 :(得分:0)

我认为您使用:contains(bs4 4.7.1)进行以下操作

import requests
from bs4 import BeautifulSoup as bs

result = requests.get("https://www.sec.gov/Archives/edgar/data/861838/000095013509003622/0000950135-09-003622.txt")
src = result.content
soup = bs(src, "lxml")
sort1 = [i.text for i in soup.select('table:contains(sale):contains(expense):contains(income), table:contains(revenue):contains(expense):contains(income)')]