我正在尝试使用python读取文件并获取每一行作为函数的参数。我有一个AttributeError:'NoneType'对象没有属性'text'错误,并且我不知道如何解决它。这是我的代码
from requests import get
from bs4 import BeautifulSoup
file = open("applications.txt","r")
appArray = file.readlines()
def app_metadata(app_link):
url = 'https://play.google.com/store/apps/details?id=' + app_link
response = get(url)
html_soup = BeautifulSoup(response.text, 'html.parser')
print(html_soup.find(class_="AHFaub").text)
#print (appArray[0])
#print(type(appArray[0]))
#print(type("com.codebrewgames.pocketcitygame"))
app_metadata(appArray[2])
答案 0 :(得分:1)
使用
appArray = [line.rstrip() for line in open('applications.txt')]
每个字符串的末尾都有换行符。 Readlines返回每个行字符串,末尾带有换行符。并且请求将appId与换行符一起使用。类似于“ com.android.chrome \ n”,而不是“ com.android.chrome”。
答案 1 :(得分:0)
以下是您的错误来源:
print(html_soup.find(class_="AHFaub").text)
html_soup.find(class_="AHFaub")
在解析响应时找不到所需的节,因此返回None
。一种解决方法是:
result = html_soup.find(class_="AHFaub")
if result:
print(result.text)
这将在尝试打印之前检查是否有有效的结果。这被认为是LBYL(飞跃前请先看)方法。
一种更Python化的方法是遵循以下EAFP(更容易要求宽恕而不是许可)方法:
try:
print(html_soup.find(class_="AHFaub").text)
except AttributeError:
print('Failed to parse url: {}'.format(url))
此方法尝试执行打印,如果由于AttributeError
而失败,它将跳过并执行except
块中的所有代码。