如何解决为什么我会收到“NoneType”对象没有属性“absolute_links”错误?
我是 Python 和编码的菜鸟,所以请对我的回答放轻松,我不懂很多术语,所以请用简单的术语回答我。
我试图用我已经在其他网站上成功使用的代码抓取一个网站,但现在它不适用于这个网站。它说“nonetype”对象没有“absolute_links”属性,但我不确定为什么。我尝试了多个不同的类、部分的“jobs”字符串,我相信它们是正确的,因为它包含我需要的 a/href。谁能告诉我哪里出错了以及如何纠正它? 这是错误代码
for item in jobs.absolute_links:
AttributeError: 'nonetype' object has no attribute 'absolute_links'
这是我的代码,我已经删除了大部分类别列表,所以它没有那么长。
from requests_html import HTMLSession
import re
import pandas as pd
url = 'https://jobs.zalando.com/en/jobs/1621977-maintenance-shift-leader-in-intralogistics/?gh_src=22377bdd1us'
departmentcategories = {
"android": "Software Development","social media": "Marketing","content ": "Marketing","sales": "Sales","ecommerce": "Ecommerce",}
languagecategories = {
" and ": "English"," und ": "German"," et ": "french"," y ": "Spanish"," e ": "Spanish","German": "German","Italian": "Italian","french": "french","Spanish": "Spanish","Dutch": "Dutch",}
experiencecategories = {
"senior": "Mid Senior Level","Junior": "Entry Level","VP ": "Executive","Director": "Director","Head of ": "Mid Senior Level",}
s = HTMLSession()
r = s.get(url)
r.html.render(sleep=1)
jobs = r.html.find('ul.cards-container',first=True)
#Section for reviewing department,language,categories
def get_department_categories(department):
depcats = []
for k,v in departmentcategories.items():
if re.search(k,department,re.IGnorECASE):
depcats.append(v)
return depcats
def get_language_categories(language):
langcats = []
for k,v in languagecategories.items():
if re.search(k,re.IGnorECASE):
langcats.append(v)
return langcats
def get_experience_categories(experience):
expcats = []
for k,v in experiencecategories.items():
if re.search(k,experience,re.IGnorECASE):
expcats.append(v)
return expcats
#Section for job title,city,and country
jobtitles=[]
cities=[]
countries=[]
departments=[]
experiencelevels=[]
jobpostlinks=[]
languages=[]
urllinks=[]
for item in jobs.absolute_links:
r = s.get(item)
urllinks.append(item)
job_title = r.html.xpath('//*[@id="root"]/div/div[2]/div[3]/div[1]/div[1]/h1',first=True).text
jobtitles.append(job_title)
city = r.html.xpath('/html/body/div[1]/div/div[2]/div[3]/div[2]/div[2]/div/div[1]/div[1]',first=True).text
cities.append(city)
country = r.html.xpath('/html/body/div[1]/div/div[2]/div[3]/div[2]/div[2]/div/div[1]/div[1]',first=True).text
if country == ('Berlin,Germany'):
country = 'Germany'
countries.append(country)
#Section for the department,languages,and experience level
#Deparment section and job title
department = r.html.xpath('/html/body/div[1]/div/div[2]/div[3]/div[2]/div[2]/div/div[1]/div[5]',first=True).text and r.html.xpath('//*[@id="root"]/div/div[2]/div[3]/div[1]/div[1]/h1',first=True).text
department_cats = get_department_categories(department)
departments.append(department_cats)
#What we're looking for section
language = r.html.xpath('/html/body/div[1]/div/div[2]/div[3]/div[2]/div[1]/div/ul[2]',first=True).text
language_cats = get_language_categories(language)
languages.append(language_cats)
#experience section
experience = r.html.xpath('/html/body/div[1]/div/div[2]/div[3]/div[2]/div[2]/div/div[1]/div[4]',first=True).text and r.html.xpath('//*[@id="job"]/div[1]/div[1]/div[1]/h1',first=True).text
experience_cats = get_experience_categories(experience)
experiencelevels.append(experience_cats)
print("-"*10)
print(job_title,country,"Zalando",",".join(department_cats),".join(experience_cats),".join(language_cats),"Fashion",item)
df = pd.DataFrame({'Job Title':jobtitles,'City':cities,'Country':countries,'Department Tags':departments,'Language Tags':languages,'Experience Tags':experiencelevels,'Link':urllinks})
df.to_csv("zalando.csv",encoding='utf-8')
解决方法
似乎“jobs.absolute_links”是空的。
在给出错误的行之前调试添加:
print (jobs.absolute_links)
看看它是否包含任何值
,当它显示 object has no attribute 'absolute_links'
时,它告诉您您已将 None
分配给您的代码试图从中检索 absolute_links
的变量。如果您的代码如下所示:
if not jobs:
print("No jobs")
return
for item in jobs.absolute_links:
那么就不会有那个错误了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。