簡體   English   中英

清單中的BeautifulSoup find_all

[英]BeautifulSoup find_all in a list

我試圖兩次使用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")

嘗試這個:

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>添加到列表中。

我認為您的logis使用:contains (bs4 4.7.1)與以下操作相同

基本上

table:contains(sale):contains(expense):contains(income)

銷售,費用和收入表

要么

table:contains(revenue):contains(expense):contains(income)')

收入,費用和收入表

在示例中返回兩個表。

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)')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM