首页 > 解决方案 > Python 属性错误;;

问题描述

来自 bs4 的代码导入请求 import BeautifulSoup

LIMIT = 50
URL = f"https://au.indeed.com/jobs?q=Python&limit={LIMIT}&radius=50"

def extract_indeed_pages():
  result = requests.get(URL)
  soup = BeautifulSoup(result.text, "html.parser")
  pagination = soup.find("div", {"class":"pagination"})
  links = pagination.find_all("a")
  pages = []
  for link in links[:-1]:
      pages.append(int(link.string))
  max_page = pages[-1]
  return max_page



def extract_indeed_jobs(last_page):
  jobs = []
  # for page in range(last_page):
  result = requests.get(f"{URL}&start={0*LIMIT}")
  soup = BeautifulSoup(result.text, "html.parser")
  results = soup.find_all("div", {"class": "jobsearch-SerpJobCard"})
  for result in results:
      title = result.find("div", {"class": "title"}).find("a")["title"]
      company = result.find("span", {"class": "company"})
      if company is None:
        print(company.find("a").string)
      else:
        print(company.string)
  return jobs

结果

DisplayrNoneAkuna CapitalNone

Akuna CapitalNoneAkuna Capital
TechSkills Accelerator
NoneNoneWestbury PartnersNone

Inflexi Technologies Pvt. Ltd.Akuna CapitalNone
Optiver
Traceback (most recent call last):  File "main.py", line 5, in <module>    indeed_jobs = extract_indeed_jobs(last_indeed_page)  File "/home/runner/python-course/indeed.py", line 30
, in extract_indeed_jobs
    print(company.find("a").string)
AttributeError: 'NoneType' object has no attribute 'find’

我不想看到任何东西,只想看到公司名称。我试图解决这个问题,但是我无法解决这个问题。我很感激你的建议

标签: pythonbeautifulsoup

解决方案


不需要打印 None 字符串,你可以像这样简单地输入

  if company is not None:
    print(company.find("a").string)

或者出于任何原因你想要它而不是让它

  if company is not None:
    print(company.find("a").string)
  if company is None:
    print(company) 

推荐阅读