使用bs4的find方法爬取网站时出现find()不接受关键字参数报错如何解决
错误原因
soup.find(id="carlist")返回的是单个Tag类型对象,直接遍历该对象会同时返回Tag子节点和NavigableString(纯文本内容)节点,NavigableString类型没有支持关键字参数的find方法,调用时就会触发你遇到的报错。- 你对
results执行了两次遍历操作,第一次遍历完成后迭代器已经耗尽,第二次遍历无法获取到任何有效内容。
修正方案
不需要逐一遍历carlist的子节点,直接在carlist节点下用find_all批量匹配所有符合条件的目标标签即可,修正后的代码如下:
from bs4 import BeautifulSoup import requests URL = "https://www.kudosprime.com/fh4/carlist.php?range=2000" page = requests.get(URL) soup = BeautifulSoup(page.content, "html.parser") results = soup.find(id="carlist") # 批量查找所有class为name的a标签 name_list = results.find_all('a', attrs={'class':'name'}) for name in name_list: print(name.text)
注:原代码中导入的selenium、pandas相关依赖在当前逻辑中未使用,可根据实际需求决定是否保留。
内容的提问来源于stack exchange,提问作者SmokedPorcupine
相关产品推荐
相关产品推荐

