我在我的python脚本中遇到问题,我试图刮擦价格和名称并比较价格和输出是否低于预算或高于预算,我在另一个网站上使用了它,但在这里似乎我遇到了错误。是的,我知道我已经过时了,即时消息仍在实施中。
代码:
import bs4
from bs4 import BeautifulSoup
import requests
from os import system
def job():
def printing():
if price1 < priceinput:
print("price lower")
else:
print("price lower")
price = soup.find(class_="price")
price2 = int(price.replace(".", ""))
name = soup.find(itemprop="name").get("content")
print(price, price2, name)
# link
urlinput = input("LINK : ")
priceinput = int(input("BUDGET :"))
url = ("private" + urlinput)
page = requests.get(url)
soup = BeautifulSoup(page.text, "lxml")
job()
错误:
Traceback (most recent call last):
File "/home/PycharmProjects/SocialScraper/venv/test.py", line 29, in <module>
job()
File "/home/PycharmProjects/SocialScraper/venv/test.py", line 16, in job
price2 = int(price.replace(".", ""))
TypeError: 'NoneType' object is not callable
问题来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
错误
TypeError: 'NoneType' object is not callable
显然意味着此处引用的html范围没有包含价格类的元素,因此价格值作为NonType返回,尝试在NoneType上调用replace会抛出错误,因为NoneType没有要调用的函数
NoneType.replace() # NoneType has no function called replace
所以你可能想改变这一行
price = soup.find(class_="price")
至
price = soup.find(class_="price") or ""
或者,当汤无法找到价格值时,您可以放置任何适合的默认值。
有关此问题的更高级调试,建议您在代码中使用ipdb
以确保其按预期工作https://pypi.org/project/ipdb/ 这是此问题的示例解决方案
price = soup.find(class_="price").text
price2 = int(price.replace(' ', '').split('.')[0][1:])
回答来源:stackoverflow