使用Beautifulsoup在标题和描述中查找字符串(关键字)?

时间:2015-11-11 14:30:47

标签: python-3.x beautifulsoup

首先:我在循环中打开一些网址并获取标题和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"在它。

1 个答案:

答案 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
-----