首先:我在循环中打开一些网址并获取标题和html代码的说明。的(工程)
第二:我想检查标题或说明中是否有给定的字符串(关键字)。 (不工作)
# 2 - Beautifulsoup: Soll Keywords suchen und Schema.org
kw = "optiker"
seite = obj_det.get('result',{}).get('website')
try:
req = urllib.request.urlopen(seite).read()
soup = BeautifulSoup(req, "html.parser")
desc = soup.findAll(attrs={"name":"description"})
title = soup.title.string
except:
title = "Zugriff verweigert"
desc = "Zugriff verweigert"
kwindesc = kw in desc
kwintitle = kw in title
print(title)
print(desc)
print(kwindesc)
print(kwintitle)
print("-----")
我的屏幕上总是错误。但肯定有标题字符串" optiker"在它。
答案 0 :(得分:3)
desc
变量是一个标记数组,而不是一个字符串(对于findAll)。您需要的信息位于content
标记的meta
属性中。我修改了你的代码,下面的工作正常。请注意将content
拉出来并使用find
代替findAll
的额外步骤。还编辑了添加不区分大小写的比较。
url = "http://www.optiker-bode.de/brillenauswahl/marken"
page=urllib.request.urlopen(url)
soup = BeautifulSoup(page.read())
kw = "optiker"
#seite = obj_det.get('result',{}).get('website')
try:
#req = urllib.request.urlopen(seite).read()
#soup = BeautifulSoup(req, "html.parser")
desc = soup.find("meta",attrs={"name":"description"}).get("content")
title = soup.title.string
except:
title = "Zugriff verweigert"
desc = "Zugriff verweigert"
kwindesc = kw in desc.lower()
kwintitle = kw in title.lower()
print(title)
print(desc)
print(kwindesc)
print(kwintitle)
print("-----")
输出
Optiker Bode | Marken
Ob Armani, JAGUAR, LIEBESKIND, Michael Kors, Oakley, Porsche, Ray-Ban oder Zeiss: Lassen Sie sich von unserer großen Markenauswahl inspirieren!
False
True
-----