Python 3.5不与BeautifulSoup和变量合作

时间:2018-01-11 03:03:14

标签: python variables beautifulsoup scrape scraper

我正在尝试编写一个可以检查YouTube视频是否属于音乐类别的程序。我已经编写了一些代码,但它几乎就像Python对我“撒谎”一样。这是代码

>>> from bs4 import BeautifulSoup
>>> from urllib.request import urlopen
>>> url = "https://www.youtube.com/watch?v=LXuNNqoo1WQ"
>>> html = urlopen(url).read()
>>> soup = BeautifulSoup(html, "html.parser")
>>> tags = soup.find_all(class_="content watch-info-tag-list")
>>> hasmusictag = 'href="/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ">Music</a>' in 
tags[0]
>>> print(hasmusictag)
False
>>> print(tags[0])
<ul class="content watch-info-tag-list">
<li><a class=" yt-uix-sessionlink spf-link " data-
sessionlink="ei=udFWWrG5EYqB8wSag5rgCg" href="/channel/UC-9-
kyTW8ZkZNDHQJ6FgpwQ">Music</a></li>
</ul>

正如您所看到的,hasmusictag应该返回true,但它返回false。我不知道为什么。所有帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

我不认为@Jay试图告诉您in运算符会引发异常,而是期望in运算符的工作方式与它的工作方式相同一个字符串。在这种情况下,tags[0]bs4.element.Tag类的一个实例,显然,in运算符(凭借__contains__运算符重载方法)不是以这种方式实现的

有许多方法可以按照您的方式进行此项工作,但最简单的方法是编写以下内容:

hasmusictag = 'href="/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ">Music</a>' in str(tags[0])