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

Scrapy爬取div标签时处理缺失文本的技术求助

解决方案

问题分析

原代码的问题在于直接通过索引获取getall()的结果,既没有处理空文本的情况,也没应对列表长度不足3的潜在报错。当第二个job-row__col--secondary标签无文本时,getall()[1]会得到空字符串,无法自动替换为N/A。

修改后的代码

class RiotscraperSpider(scrapy.Spider):
    name = 'riotscraper'
    allowed_domains = ['www.riotgames.com']
    start_urls = ['https://www.riotgames.com/en/work-with-us/jobs']

    def parse(self, response):
        jobs = response.css('li.job-row.job-row--body')
        for job in jobs:
            # 获取并清理职位名称
            job_name = job.css('div.job-row__col.job-row__col--primary::text').get()
            job_name = job_name.strip() if job_name else None
            
            # 获取所有secondary列文本并处理空值
            secondary_texts = job.css('div.job-row__col.job-row__col--secondary::text').getall()
            processed_texts = []
            # 遍历前3个文本,空内容替换为N/A
            for text in secondary_texts[:3]:
                cleaned = text.strip() if text else ''
                processed_texts.append(cleaned if cleaned else 'N/A')
            # 列数不足3时自动补全N/A
            while len(processed_texts) < 3:
                processed_texts.append('N/A')
            
            yield {
                'job_name': job_name,
                'Craft_name': processed_texts[0],
                'Team_name': processed_texts[1],
                'Office': processed_texts[2]
            }

关键改动说明

  • 先提取所有目标列的文本,逐个清理空白字符,空文本直接替换为N/A
  • 增加长度检查,避免页面结构变动导致列数不足时触发索引错误,自动补全缺失的N/A
  • 优化职位名称提取逻辑,去除多余空白字符,保证数据整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:45:47