The html_string is of type string, it doesn't have .find_all() method.
To get information from specified URL, you can use next example:
import requests
import pandas as pd
from bs4 import BeautifulSoup
url = "https://www.cloudtango.org/"
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0"
}
soup = BeautifulSoup(requests.get(url, headers=headers).content, "html.parser")
data1 = soup.find_all("td", {"class": "company"})
full = []
for each in data1:
comp = each.find("img")["alt"]
desc = each.find_next("td").text
dd = {"company": comp, "description": desc}
full.append(dd)
print(pd.DataFrame(full))
Prints:
company description
0 BlackPoint IT Services BlackPoint’s comprehensive range of Managed IT Services is designed to help you improve IT quality, efficiency and reliability -and save you up to 50% on IT cost. Providing IT solutions for more …
1 ICC Managed Services The ICC Group is a global and independent IT solutions company, providing a comprehensive, customer focused service to the SME, enterprise and public sector markets. \r\n\r\nICC deliver a full …
2 First Focus First Focus is Australia’s best managed service provider for medium sized organisations. With tens of thousands of end users supported across hundreds of customers, First Focus has the experience …
...and so on.
EDIT: To read from local file:
import pandas as pd
from bs4 import BeautifulSoup
with open('your_file.html', 'r') as f_in
soup = BeautifulSoup(f_in.read(), "html.parser")
data1 = soup.find_all("td", {"class": "company"})
full = []
for each in data1:
comp = each.find("img")["alt"]
desc = each.find_next("td").text
dd = {"company": comp, "description": desc}
full.append(dd)
print(pd.DataFrame(full))