Metacritic数据爬取:如何正确提取游戏开发商(Developer)数据
你尝试编写的提取代码不可行,该选择器只会匹配到「Developer」标签文本本身,无法获取对应的开发商名称,且如果页面存在多个class为label的span元素会匹配错误。以下是可稳定运行的修改方案,所有修改针对游戏详情数据爬取脚本:
修改步骤
- 新增Excel表头
找到脚本中定义Excel表头的部分,新增Developer列的表头:
worksheet.write(0, 7, "User Rate Count") # 新增下面这行 worksheet.write(0, 8, "Developer")
- 新增开发商数据提取逻辑
在提取完发行商数据的代码段后,新增开发商提取代码:
publishers_list = [] publishers = data['publisher'] for pb in publishers: publishers_list.append(pb['name']) # ==========新增开发商提取逻辑开始========== developer_list = [] try: # 定位到侧边详情栏的所有信息条目 detail_items = soup.select('div.details.side_details li') for item in detail_items: label_ele = item.find('span', class_='label') # 匹配到Developer标签的条目 if label_ele and label_ele.text.strip() == 'Developer:': # 优先提取带链接的开发商名称(支持多个开发商) dev_eles = item.find_all('a') if dev_eles: for dev in dev_eles: developer_list.append(dev.text.strip()) # 无链接的情况直接提取标签后的文本 else: dev_text = label_ele.next_sibling.strip() if dev_text: developer_list.append(dev_text) except: # 无开发商数据的场景留空即可,不中断爬取 pass # ==========新增开发商提取逻辑结束==========
- 新增开发商数据写入逻辑
找到写入Excel的代码段,新增Developer列的写入:
worksheet.write(row, 7, user_rate_count) # 新增下面这行 worksheet.write(row, 8, ", ".join(developer_list)) row += 1
注意事项
- 以上逻辑兼容单开发商、多开发商、无开发商、开发商无跳转链接等多种场景,稳定性更高
- 如果担心被反爬,可以把注释掉的
time.sleep(2)打开,降低请求频率
内容的提问来源于stack exchange,提问作者warch1LD
相关产品推荐
相关产品推荐

