首页 > 开发 > Python > 正文

python如何正确抓取网页标题

2017-09-06 19:38:58  来源:网友分享

通过 urllib 将网页内容抓取下来,然后用正则表达式 re 模块将标题匹配出来,但是发现部分标题会出现问题,比如下面抓 Apple 的代码运行结果是 App,测试发现匹配结果 m 是没有问题的,问题出现在了 strip() 这里。

# -*- coding: utf-8 -*-import urllibimport reurl='http://apple.com'html = urllib.urlopen(url).read()#print htmlm = re.search("<title>.*</title>", html)print m.group() # 这里输出结果 <title>Apple</title>print m.group().strip("</title>") #问题应该出现在这个正则

解决方案

有一个简单的错误。HTML文件不能用正则表达式parse,因为他的文法比正则表达式高级,具体原因参考这里
推荐解析这种HTML用一些第三方库,例如mechanize
我的代码如下:

import mechanizeimport cookielibif __name__=='__main__':    br = mechanize.Browser()    br.set_cookiejar(cookielib.LWPCookieJar()) # Cookie jar        br.set_handle_equiv(True) # Browser Option    br.set_handle_gzip(True)    br.set_handle_redirect(True)    br.set_handle_referer(True)    br.set_handle_robots(False)        br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)        br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]     br.open("http://apple.com")    print br.title()

输出为Apple
对于mechanize的详细使用,参考这里

安装mechanize,就easy_install一下就好。