Python 3.5 不与 BeautifulSoup 和变量合作

问题描述 投票:0回答:1

我正在尝试编写一个程序来检查 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。我不知道为什么。感谢所有帮助!

python variables web-scraping beautifulsoup
1个回答
1
投票

我不认为@Jay 试图告诉您

in
运算符会引发异常,而是您期望
in
运算符以与字符串相同的方式工作。在本例中,
tags[0]
bs4.element.Tag
类的实例,显然,
in
运算符(凭借
__contains__
运算符重载方法)不是以这种方式实现的。

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

hasmusictag = 'href="/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ">Music</a>' in str(tags[0])
© www.soinside.com 2019 - 2024. All rights reserved.