【原创】 linux-python …

linux 下python spider获取网页title

原创所有,转载请以超链接附明本文地址及作者,谢谢 http://blog.sina.com.cn/s/blog_83dc494d0101c20q.html
------------------------------------
#!/usr/bin/python
#!coding:utf-8

import re
import urllib

urls=['http://www.baidu.com','http://www.hao123.com']
i = 0
regex=''
#pattren = re.compile(regex)
while i < len(urls):
    htmlfile = urllib.urlopen(urls[i])
    htmltext = htmlfile.read()
    print urls[i],
    #print regex,htmltext[:200]
    titles = re.findall(regex,htmltext)
    for f in titles:
        print f
    i+=1
---------------------------------------------------
说明,使用python urllib模块和re(正则)模块。获取网页html文件,使用正则匹配title标签。代码如上文以及下图所展示:

【原创】 <wbr>linux-python <wbr>spider系列 <wbr>- <wbr>获取title(含解码)
当然,你可以import sys,使用sys.argv 来获取你想要的网页title。
下面展示代码,有兴趣自己百度或者谷歌如何进行的,很简单的东西,太小儿科了,但是考虑可能有的同学真的需要,就写一下吧。(爬虫获取到url,title,类别。。。)
--------------------------------------
#!/usr/bin/python
#!coding:utf-8

import re
import urllib
import sys

def get_title(urls):
    i = 0
    regex=''
    #pattren = re.compile(regex)
    while i < len(urls):
        htmlfile = urllib.urlopen(urls[i])
        htmltext = htmlfile.read()
        print urls[i],
        #print regex,htmltext[:200]
        titles = re.findall(regex,htmltext)
        for f in titles:
            print f
        i+=1

if __name__== '__main__':
    get_title(sys.argv[1:])
-----------------------------
说明:因为代码比较简短,不加注释了。
使用:
zhangzhipeng@zhangzhipeng-K53SD:~/py/spider_test$ python get-title-argv.py http://www.baidu.com http://www.google.com http://www.hao123.com
http://www.baidu.com 百度一下,你就知道
http://www.google.com Google
http://www.hao123.com hao123_上网从这里开始
zhangzhipeng@zhangzhipeng-K53SD:~/py/spider_test$ 
【原创】 <wbr>linux-python <wbr>spider系列 <wbr>- <wbr>获取title(含解码)
这里有一个问题的,如果网页的编码格式为GB2312的会乱码。
【原创】 <wbr>linux-python <wbr>spider系列 <wbr>- <wbr>获取title(含解码)
所以最好判断一下编码
china.com ---> charset =" GB2312 ">
qq.com ---> http-equiv="Content-Type" content="text/html; charset=gb2312">
zhangzhipeng2023.cn ---> property =" qc:admins " content =" 156636705167201056720236367 "/>
咳咳...我的这个渣网站都没写charset ...
抓到以后我记得GB2312的转成iso-8859-01 貌似可以正常显示,试试看- .-
----------------------
#!/usr/bin/python
#!coding:utf-8

import re
import urllib
import sys

def get_title(urls):
    i = 0
    regex_title = ''
    regex_char = ''
    #pattren = re.compile(regex)
    while i < len(urls):
        htmlfile = urllib.urlopen(urls[i])
        htmltext = htmlfile.read()
        print urls[i],
        #print regex,htmltext[:200]
        titles = re.findall(regex_title,htmltext)
        if len(titles)>0:
            titles = titles[0]
        charset = re.findall(regex_char,htmltext)
        if len(charset)>0:
if len(charset[0]) == 1:
charset = charset[0][0]
elif len(charset[0]) == 2:
charset = charset[0][1]
else:
            charset = ''
        else:
            charset =''
        if charset.lower() == 'gb2312':
            titles = titles.decode('gb2312')
        elif charset.lower() == '' or charset.lower()==None :
            titles = titles.decode('iso-8859-1')
        print titles,charset
        i+=1
-----------------------
【原创】 <wbr>linux-python <wbr>spider系列 <wbr>- <wbr>获取title(含解码)

我只能做到这里了
python 处理编码真是硬伤... 中华网明明是gb2312还是解码错误...
如果有对python encoding擅长的,希望回帖求指点。

原创所有,转载请以超链接附明本文地址及作者,谢谢 http://blog.sina.com.cn/s/blog_83dc494d0101c20q.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值