libgs-dev
嗨, 运行代码时出现此错误,我不知道为什么得到这个,PRICE变量不应为NoneType。
import requests
from bs4 import BeautifulSoup
from mysql import connector
first_url = "https://www.freelancer.com/jobs/?keyword=python"
response = requests.get(first_url)
page = BeautifulSoup(response.text, 'html.parser')
items = page.find_all("div", attrs={"class": "JobSearchCard-item-inner"})
for index, item in enumerate(items):
title = item.find("a", attrs={"class": "JobSearchCard-primary-heading-link"}).text.strip()
timeLeft = item.find("span", attrs={"class": "JobSearchCard-primary-heading-days"}).text.strip()
try:
verified = 'VERIFIED' == item.find("div", attrs={"class":"JobSearchCard-primary-heading-status Tooltip--top"}).text.strip()
except:
verified = False
description = item.find("p", attrs={"class": "JobSearchCard-primary-description"}).text.strip()
# do tags section
price = item.find("div", attrs={"class": "JobSearchCard-secondary-price"}).text.strip().split()
price = ' '.join(price)
bids = int(item.find("div", attrs={"class": "JobSearchCard-secondary-entry"}).text.strip().split()[0])
print("title: ", title)
print("time left: ", timeLeft)
print("verified: ", verified)
print("description: ", description)
print("price: ", price)
print("bids: ", bids)
print("\nindex: {} ------------------------------------------------------------------\n".format(index))
如果您注意到该代码,该程序应打印出TITLE,TIEMLEFT,DESCRIPTION,VERIFIED变量,然后打印出错误。 有什么问题吗?
答案 0 :(得分:2)
由于此信息,您收到此错误
它没有价格或出价。您可以在该帖子中添加一个try-except块并设置出价和价格所需的值。
try:
price = item.find("div", attrs={"class": "JobSearchCard-secondary-price"}).text.strip().split()
except AttributeError:
price=''
price = ' '.join(price)
try:
bids = int(item.find("div", attrs={"class": "JobSearchCard-secondary-entry"}).text.strip().split()[0])
except AttributeError:
bids=''
答案 1 :(得分:1)
如果您滚动浏览源网页上的结果列表,则该行没有发布价格(无出价)。因此,在撰写本文时,该错误是合法的,因为该条目不存在您要查找的元素。
要解决您的问题,只需添加一个检查元素是否存在即可。如果是这样,则提取文本
price = item.find("div", attrs={"class": "JobSearchCard-secondary-price"})
if price:
price = price.text.strip().split()
else:
price = "No Avg Price"
答案 2 :(得分:0)
nonetype错误是由 “ item.find(” div“,attrs = {” class“:” JobSearchCard-secondary-price“})” 引起的不是可用的数据类型(例如,字符串而不是int)或自定义类型(例如,名称类型),因此您可能希望在运行该行时查看正在接收的数据,并尽可能将其转换为可用的数据类型尝试格式化它。