构建基础Web Crawler时触发TypeError错误,请求协助排查
问题排查与修正方案
我来帮你解决这个爬虫代码的报错问题,你的代码里有几个明显的小错误导致了这个TypeError,咱们一步步来修正:
1. 导入语句格式错误
你把两个导入写在一行的语法是错误的,正确的写法应该分开导入:
import requests from bs4 import BeautifulSoup
2. BeautifulSoup方法名拼写错误
这是导致你当前报错的核心原因:BeautifulSoup中没有findALL()这个方法,正确的方法名是**find_all()**(小写字母+下划线)。你误写为大写的findALL,会导致Python找不到这个方法,返回None,当你尝试调用None时就会抛出'NoneType' object is not callable的错误。
3. 获取href属性的参数错误
在提取链接的href属性时,你写的link.get(href)是错误的,这里需要传入字符串形式的属性名'href',否则Python会把href当作未定义的变量处理,后续也会报错。
修正后的完整代码
import requests from bs4 import BeautifulSoup def function1(): url = "http://www.iitg.ac.in/" source_code = requests.get(url) plain_text = source_code.text soup = BeautifulSoup(plain_text, 'html.parser') # 建议指定解析器,避免警告 for link in soup.find_all('a', {'target': '_blank'}): href = link.get('href') print(href) function1()
另外补充一点:初始化BeautifulSoup时最好指定解析器(比如'html.parser'),否则运行时可能会弹出关于未指定解析器的警告,这是一个爬虫开发的最佳实践。
内容的提问来源于stack exchange,提问作者Chandan Agrawal
相关产品推荐
相关产品推荐

