【问题标题】:Getting the title using urllib使用 urllib 获取标题
【发布时间】:2015-10-22 02:43:40
【问题描述】:

我应该编写一个进入网站并获得其标题的代码,所以这是我拥有的代码

import urllib.request
def findTitle(url):
    urllib.request.Request(url)
    #open url
    urllib.request.urlopen(url)
    urllib.request.urlopen(url).read().decode('utf-8')
    #set same variable equal to the end of <title> tag
    endTitlePos = url.find("<title>")
    #set variable equal to starting position of <title> tag
    startTitlePos  = url.find("<title>", endTitlePos)
    startTitlePos += len("<title>")
    #set new variable equal to </title>
    TitleContent=url.find("</title>",startTitlePos)
    #return slice of output between the two variables
    title = url[startTitlePos:endTitlePos]
    content_list=[]
    content_list.append(title)
    return content_list
def main():
    url="https://google.com/search"
    print(findTitle(url))

main()

我们以谷歌为例。现在它应该只打印“google”但目前它打印“['//google.com/searc']”我只是好奇我在这里缺少什么,我的意思是它看起来很简单但我不知道为什么它打印url 而不是标题,我如何将它从列表中变成字符串?

【问题讨论】:

    标签: python urllib


    【解决方案1】:

    有几种方法可以从网页中获取数据。最好用 BeautifulSoup。在您的情况下,字符串 split() 方法效果很好

    import urllib.request
    
    def findTitle(url):
        webpage = urllib.request.urlopen(url).read()
        title = str(webpage).split('<title>')[1].split('</title>')[0]
        return title
    
    >>>print(findTitle('http://www.google.com'))
    Google
    

    【讨论】:

    • 我知道这种方法是如何工作的,非常感谢。我很好奇他们到底在用他们给我们的骨架做什么。我的意思是我在问为什么我的代码没有找到实际的标题?好像刚刚追踪到了url,然后显示出来了。
    • 在您的代码中只需将 3 语句更改为 urllib.request.urlopen(url).read()
    猜你喜欢
    • 1970-01-01
    • 2011-12-17
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多