使用Python检查网页上是否有某些单词?

时间:2011-11-20 20:14:38

标签: python web

我有一个单词列表,在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”,它似乎永远不会在网站上找到这些词。

代码有什么问题?这似乎是一个语义错误,因为语法工作正常,并且没有抛出异常(虽然在我的最后我确实有异常处理,但它仍会报告是否抛出异常)。

2 个答案:

答案 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进行编码。你可以找到要求网站标题的编码