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
相关产品推荐
相关产品推荐

