为什么我会收到“NoneType”对象没有属性“absolute_links”错误?

如何解决为什么我会收到“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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?