使用BeautifulSoup爬取timesjob.com时触发TypeError错误求助
解决爬取timesjob.com Python职位时的TypeError错误
错误成因
你在循环里执行了job = job.text,这一步把BeautifulSoup返回的Tag对象转换成了普通字符串。字符串类型的find()方法仅用于查找子串位置,只接受待查找的字符串参数,不支持class_这类关键字参数,因此触发了TypeError: find() takes no keyword arguments。
修正后的代码
删除job = job.text这行,或用单独变量存储文本内容,保留原Tag对象用于节点查找:
from bs4 import BeautifulSoup import requests html_text = requests.get("https://www.timesjobs.com/candidate/job-search.html?searchType=personalizedSearch&from=submit&txtKeywords=python&txtLocation=").text soup = BeautifulSoup(html_text, "lxml") jobs = soup.find_all("li", class_="clearfix job-bx wht-shd-bx") for job in jobs: # 用单独变量存储文本,不覆盖原Tag对象 job_text = job.text company_name = job.find("h3", class_="joblist-comp-name").text.replace(" ", "") skills = job.find("span", class_="srp-skills").text.replace(" ", "") published_date = job.find("span", class_="sim-posted").span.text print(f""" Company Name: {company_name} Required Skills: {skills} Published Date: {published_date} """) print("-" * 50)
额外提示
- 原代码中打印职位信息的语句在循环外,只会输出最后一个职位的内容,修正后移到循环内可输出所有职位信息。
- 清理文本时,除了
replace(" ", ""),也可以用get_text(strip=True)更高效地移除多余空白字符。
内容的提问来源于stack exchange,提问作者Yogadharshan
相关产品推荐
相关产品推荐

