Python爬虫获取页码遇IndexError,如何在if语句中赋值默认值1
错误原因
- 核心报错来自第七个页面没有匹配到
#yw2 a选择器对应的页码元素,pag列表处理后为空,直接访问pag[-1]触发索引越界 - 原代码的if逻辑完全不生效:既没有给变量赋值,
else分支的continue还会直接跳过后续分页链接处理流程 - 没有处理页码元素无href属性的场景,后续取
t['href']时也可能触发报错
修正后代码
final_data = [] for m in range(0, 10): df = {'data':[]} driver.get(links_countries['links'][m]) time.sleep(3) soup = BeautifulSoup(driver.page_source, 'html5lib') pages = soup.select("#yw2 a") pag = [] for p in pages: pag.append(p.get_text(strip=True)) # 过滤空字符串 pag = [string for string in pag if string] # 处理分页总页数:空列表/值小于1都默认设为1 if not pag or int(pag[-1]) < 1: total_page = 1 else: total_page = int(pag[-1]) print('Page number', total_page) href = [] for t in pages: # 先判断有没有href属性再收集 if 'href' in t.attrs and t['href'].strip(): href.append(t['href']) # 处理无分页链接的情况,默认用当前页链接 if not href: urls = links_countries['links'][m] else: urls = "https://www.transfermarkt.co.uk" + href[0] print(urls)
额外说明
- 原代码中
p.get_text(strip=True).replace('', '')是冗余写法,strip=True已经可以处理首尾空白,不需要额外替换空字符串 - 新增了href属性存在性校验,避免部分无href的页码元素导致的KeyError
- 新增了href列表为空的兜底处理,避免索引越界
内容的提问来源于stack exchange,提问作者me.limes
相关产品推荐
相关产品推荐

