Python定义get_proxies函数后触发IndentationError缩进错误如何解决
错误原因分析
你遇到的IndentationError: unexpected indent属于Python典型的缩进错误,Python通过缩进区分代码块的所属层级,你的代码存在多处缩进逻辑错误,具体问题如下:
get_proxies函数定义后,response = requests.get(url)及后续属于函数逻辑的代码完全没有缩进,导致函数内定义的url变量无法被外部代码访问,函数结构完全不符合Python语法规范if条件判断后的代码没有缩进进if所属代码块,和if同级,导致条件判断完全失效proxies.add(proxy)缩进层级错误,没有归属到if代码块内- 最后
return proxies行缩进空格数和同层级代码不一致,且错误缩进在for循环内部,直接触发报错
此外代码还存在两处非缩进类问题:没有导入requests依赖库,代码中的"是HTML转义字符,实际运行需要替换为英文双引号"。
修复后的完整代码
import requests from lxml.html import fromstring def get_proxies(): url = 'https://free-proxy-list.net/' response = requests.get(url) parser = fromstring(response.text) proxies = set() for i in parser.xpath('//tbody/tr')[:10]: if i.xpath('.//td[7][contains(text(),"yes")]'): # Grabbing IP and corresponding PORT proxy = ":".join([i.xpath('.//td[1]/text()')[0], i.xpath('.//td[2]/text()')[0]]) proxies.add(proxy) return proxies
修复说明
- 函数内部所有代码统一使用4个空格缩进,保证层级清晰
if判断后的代理拼接、加入集合的代码统一缩进进if代码块,只有条件满足时才执行return语句调整到和for循环同级的位置,保证遍历完前10条代理数据后再返回结果- 补充导入
requests库,将HTML转义的引号替换为正常的英文双引号
内容的提问来源于stack exchange,提问作者Aryan Samthaan
相关产品推荐
相关产品推荐

