URL数字每次加10批量访问代码报错:TypeError: must be str, not int
修正你的批量URL生成代码
先拆解下你代码里的几个核心问题:
- 直接把整数
i和字符串拼接,Python不允许不同类型直接相加,这就是你碰到TypeError: must be str, not int的根源 - 循环逻辑完全走偏了——你把字符串
url当成函数调用url(),还试图用它来控制循环,这完全不符合Python的语法逻辑 - 原URL的格式有错误,
aspx后面应该用?来连接参数,你写成了aspxk=&k=,这会导致URL无法正常访问
下面是修正后的代码,我会同步说明每处改动:
# 初始分页偏移值设为0 i = 0 # 设置你要生成的最大偏移值,比如到50为止(可按需调整) max_offset = 50 # 用while循环控制每次偏移值加10 while i <= max_offset: # 用f-string格式化字符串,自动把整数i转成字符串,同时修正URL参数格式 url = f"https://www.minsalud.gov.co/sites/rid/Paginas/freesearchresults.aspx?k=Salud%20Mental%20Legislacion&offset={i}" print(url) # 每次循环偏移值加10 i += 10
如果觉得while循环麻烦,也可以用更简洁的range来写for循环:
# 从0开始,每次步长10,生成到50(包含50的话写range(0,51,10),不包含就写range(0,50,10)) for i in range(0, 51, 10): url = f"https://www.minsalud.gov.co/sites/rid/Paginas/freesearchresults.aspx?k=Salud%20Mental%20Legislacion&offset={i}" print(url)
关键改动说明:
- 字符串拼接:用f-string(Python3.6及以上支持)来格式化URL,自动完成整数到字符串的转换,彻底避免类型错误
- URL格式修正:把原URL里错误的参数连接方式改成标准的
?k=...&offset=格式,确保URL能正常访问(我假设你需要的是offset参数来实现分页,如果实际参数名不同,替换成你需要的即可) - 循环逻辑:用
while或range来精准控制i每次递增10,生成对应的分页URL
如果需要批量打开这些页面,可以加上webbrowser模块调用:
import webbrowser for i in range(0, 51, 10): url = f"https://www.minsalud.gov.co/sites/rid/Paginas/freesearchresults.aspx?k=Salud%20Mental%20Legislacion&offset={i}" print(f"正在打开页面: {url}") webbrowser.open(url)
这样就能自动批量打开每个分页页面了。
内容的提问来源于stack exchange,提问作者Sebastián Ramírez
相关产品推荐
相关产品推荐

