您好,匿名用户
随意问技术百科期待您的加入

python如何正确抓取网页标题

0 投票

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

# -*- coding: utf-8 -*-
import urllib
import re

url='http://apple.com'
html = urllib.urlopen(url).read()
#print html
m = re.search("<title>.*</title>", html)
print m.group() # 这里输出结果 <title>Apple</title>
print m.group().strip("</title>") #问题应该出现在这个正则
用户头像 提问 2012年 12月1日 @ Demeter 上等兵 (208 威望)
分享到:

1个回答

0 投票
 
最佳答案

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

import mechanize
import cookielib
if __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一下就好。

用户头像 回复 2012年 12月1日 @ Trundle 上等兵 (301 威望)
选中 2012年 12月1日 @Demeter
提一个问题:

相关问题

0 投票
1 回复 97 阅读
用户头像 提问 2012年 12月1日 @ Lulu 上等兵 (293 威望)
0 投票
1 回复 139 阅读
用户头像 提问 2012年 12月1日 @ Swain 上等兵 (232 威望)
0 投票
1 回复 91 阅读
0 投票
1 回复 24 阅读
用户头像 提问 2014年 2月24日 @ Ryze 上等兵 (293 威望)
0 投票
1 回复 47 阅读
用户头像 提问 2012年 12月1日 @ Orianna 上等兵 (193 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...