You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup爬取Indeed招聘网提取a标签data-jk属性值问题

问题解决说明
  • 关于item.find('a')没有返回带tapItem类的a标签的原因:
    你调用soup.find_all('a', class_= 'tapItem')得到的每个item本身就是你要找的那个带data-jk属性的a标签,find()方法的作用是查询当前节点的子孙节点,所以item.find('a')只会返回item内部嵌套的其他a标签,也就是你输出结果里的公司链接,部分职位卡片内部没有嵌套a标签就会返回None。
  • 提取data-jk属性的方法:
    BeautifulSoup中可以直接通过标签对象的get()方法或者下标取值的方式获取自定义属性,推荐用get(),属性不存在时不会抛出异常。你要的职位key直接从item上取即可,不需要再调用find找a标签。
修正后的代码
def transform(soup):
    divs = soup.find_all('a', class_= 'tapItem')
    
    for item in divs:
        title = item.find('h2', {'class':'jobTitle-color-purple'}).text
        # 直接从当前item(就是带tapItem的a标签)取data-jk属性
        job_key = item.get('data-jk')
        # 拼接职位详情页链接
        if job_key:
            job_url = f"https://uk.indeed.com/viewjob?jk={job_key}"
        else:
            job_url = "无有效职位链接"
        
        print(title)
        print(job_key)
        print(job_url)
        
transform(soup)

如果担心页面结构有变化,可以先判断item是否有data-jk属性再做后续处理,避免逻辑报错。

内容的提问来源于stack exchange,提问作者ppincus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:15:03