我有一个单词列表,在Python中我需要遍历每个单词并检查单词是否在网站上。
目前,这是我所拥有的(与此问题有关)的片段:
words = ['word', 'word1', 'word2']
site = urllib.request.urlopen(link)
for word in words:
if word in site:
print(word)
else:
print(word, "not found")
我有一个单词列表,我打开网站,然后遍历每个单词,检查网站中的单词。请注意,我正在使用一个网站,其中包含所有这些单词(我自己设置,我可以验证它是否有效),链接是网站的网址。
问题是,我总是去找“ word not found”,它似乎永远不会在网站上找到这些词。
代码有什么问题?这似乎是一个语义错误,因为语法工作正常,并且没有抛出异常(虽然在我的最后我确实有异常处理,但它仍会报告是否抛出异常)。
答案 0 :(得分:7)
urlopen()
函数返回“类文件对象”。要阅读数据,您必须致电read()
:
site = urllib.request.urlopen(link).read()
还有其他方法可以读取数据,但这是将整个页面数据加载到内存中以便快速搜索的简单方法。
您的代码编写的原因是因为类似文件的对象也是可迭代的,这意味着它可以与in
运算符一起使用。但它没有做你想做的事。
答案 1 :(得分:2)
如果您解码链接内容,它也会有所帮助。否则,它将被读取为字节。我遇到了类似的问题。尝试
temp = urllib.request.urlopen(link)
HTML = temp.read().decode("utf-8")
这将使用Unicode解码链接 链接可能无法使用Unicode进行编码。你可以找到要求网站标题的编码