python - 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’
我不想看到任何东西,只想看到公司名称。我试图解决这个问题,但是我无法解决这个问题。我很感激你的建议
解决方案
不需要打印 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)
推荐阅读
- azure-sql-database - 索引碎片
- angular - Angular 12 - 根据角色重定向用户
- java - 如何判断一个类是java bean
- django - 在对象中添加 .annotate 外键不会给出明显的结果
- javascript - 使用 css 隐藏特定 p 标签的第二个 div
- python - 在python相邻数字问题中列出超出范围的问题
- android - 如何为混合应用程序增加 webview 以使用 FB Pixel
- python - Selenium 自动化导致“401 Unauthorized”错误
- java - 在 Android Studio 上启动应用时出错
- python - 如何将一个numpy数组元素除以另一个低维的numpy数组