如何解决AttributeError: 'NoneType' 对象在使用 BeautifulSoup 时没有属性 'text'
我正在运行 YouTube 教程中的以下代码,但是当我想从 .totalcount
类中获取文本时,出现了 nonetype Object has no attribute "text"
错误。
实际上在教程视频中它起作用了。有什么帮助吗?如果在细节上那将是很棒的。提前致谢。
url = "https://newyork.craigslist.org/"
site = requests.get(url)
soup = BeautifulSoup(site.text,"html.parser")
sub_link = soup.select("#jjj0 a")
for l in sub_link:
jobcat = l.text
joburl = "https://newyork.craigslist.org/" + l.get("href")
#print(joburl)
r = requests.get(joburl)
soup2 = BeautifulSoup(r.text,"html.parser")
#for total in soup2.select_one("span",class_ = "totalcount"):
#print(total)
total = soup2.select_one(".totalcount").text
#total = soup2.find("span",class_ = "totalcount").text.strip()
print(total)
解决方法
我尝试运行您的代码并取消注释 joburl
的打印语句。
在第一次迭代时,它显示
https://newyork.craigslist.org//d/accounting-finance/search/acc
注意它在基础部分 https://newyork.craigslist.org
后面有一个双斜线。
在浏览器中打开它会显示一个 404 Not Found 页面。
许多网络服务器会(方便地)为您解析 URL 中的多个斜杠——从而避免可能出现的此类烦人的情况。这个网站好像没有。
解决方法是去掉这一行的尾部斜线:
joburl = "https://newyork.craigslist.org/" + l.get("href")
但最好将其从您定义文件顶部的基础 url
的位置删除。
以下工作:
from bs4 import BeautifulSoup
import requests
url = "https://newyork.craigslist.org"
site = requests.get(url)
soup = BeautifulSoup(site.text,"html.parser")
sub_link = soup.select("#jjj0 a")
for l in sub_link:
jobcat = l.text
joburl = url + l.get("href")
# print(joburl)
r = requests.get(joburl)
soup2 = BeautifulSoup(r.text,"html.parser")
total = soup2.select_one(".totalcount").text
print(total)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。