使用BeautifulSoup爬取Indeed职位标题时混入new标识如何解决
问题根因
原代码中item.find('span')会匹配容器下第一个span标签,而Indeed的新职位标识"new"本身就是用span标签渲染的,所以会优先抓取到这个不需要的内容。
解决方法
推荐通过匹配span标签的属性特征过滤,Indeed的职位标题span都自带title属性,直接匹配带有该属性的span即可,稳定性更高,修改后的transform函数代码如下:
def transform(soup): results = soup.find_all('div',class_='slider_container') for item in results: # 匹配带有title属性的span标签,即为职位标题 job_title = item.find('span', title=True).text.strip() print(job_title)
也可以通过文本过滤的方式实现,直接跳过内容为"new"的结果:
def transform(soup): results = soup.find_all('div',class_='slider_container') for item in results: job_title = item.find('span').text.strip() # 过滤new标识 if job_title != 'new': print(job_title)
两种方案都可以输出你需要的结果。
内容的提问来源于stack exchange,提问作者Kyelle
相关产品推荐
相关产品推荐

