Python多线程爬虫报can only concatenate str (not "int") to str如何解决
报错含义
这个TypeError: can only concatenate str (not "int") to str的含义是:Python不支持直接将字符串和整数通过+运算符拼接。
你的代码中,创建线程时传入的参数是i + 1,这是整数类型,传入run_the_command函数后赋值给args变量,你在拼接请求URL时直接用"https://coinmarketcap.com/?page=" + args,属于字符串加整数的非法操作,所以触发了该错误。
解决方法
只需要将整数类型的args转换为字符串,或者使用字符串格式化方法拼接URL即可,有两种常用修改方案:
方案1:使用f-string格式化(推荐,可读性更高)
将报错的那行代码修改为:
r = requests.get(f"https://coinmarketcap.com/?page={args}")
方案2:手动转换为字符串后拼接
将报错的那行代码修改为:
r = requests.get("https://coinmarketcap.com/?page=" + str(args))
其他优化建议
- 你当前的异常捕获
try...except只包裹了线程启动的代码,线程内部执行的网络请求、页面解析、数据库操作的异常都无法被捕获,建议将异常捕获逻辑放到run_the_command函数内部。 - 批量请求目标站点建议添加请求头
User-Agent模拟浏览器访问,避免被站点反爬策略拦截。 - 数据库连接建议用完之后及时关闭,避免无用资源占用过多。
内容的提问来源于stack exchange,提问作者Ehsan Akbar
相关产品推荐
相关产品推荐

