您的位置:首页 > 编程语言 > Python开发

python 抓取腾讯微博数据并做简单的分析 .

2013-06-17 11:15 786 查看
利用python去读取腾讯微博中某个人的数据,统计和他相关的一些连接,并对每个打印每个连接的数据,本人采用的python版本为3.3.

[python]
view plaincopyprint?

from html.parser import HTMLParser    
import urllib.request  
import re  
  
pattern = re.compile(r'http://t.qq.com/*?')  
  
class MyParser(HTMLParser):  
      
    a_txt =False  
    total  = 0  
    sample_list = []  
    def inputSelfAddress(self, name):  
        self.sample_list.append(name)  
    def __init__(self):  
       HTMLParser.__init__(self)          
         
    def handle_starttag(self, tag, attrs):  
        if tag=='div':   
           for name,value in attrs:  
               if (name == 'class')and(value == 'msgCnt'):  
                     self.a_txt=True  
        if tag=='a':  
            for name, value in attrs:  
                if(name == 'href'):  
                     match = pattern.match(value)  
                     if(match):  
                         if value in  self.sample_list:  
                             return  
                         else:  
                            self.total=self.total+1  
                            self.sample_list.append(value)  
              
    def handle_data(self, data):  
         if self.a_txt:    
            print (data)   
            self.a_txt=False   
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')  
opener = urllib.request.build_opener()  
  
opener.addheaders = [headers]  
  
strAddress = "http://t.qq.com/xiaoRainie"  
fp =opener.open(strAddress)  
  
mybytes = fp.read()  
mystr = mybytes.decode("utf8")  
fp.close()  
myparser = MyParser()  
myparser.inputSelfAddress(strAddress)  
myparser.feed(mystr)   
  
print("总数:", myparser.total-11)  
for i in range(int(myparser.total), 1, -1):  
    print(myparser.sample_list[i-1])  
print("结束")  
for i in range(int(myparser.total), 1, -1):  
    fp =opener.open(myparser.sample_list[i-1])  
    myparser.inputSelfAddress(myparser.sample_list[i-1])  
    mybytes = fp.read()  
    mystr = mybytes.decode("utf8")  
    fp.close()  
    myparser = MyParser()    
    myparser.feed(mystr)  
  
      

from html.parser import HTMLParser
import urllib.request
import re

pattern = re.compile(r'http://t.qq.com/*?')

class MyParser(HTMLParser):

a_txt =False
total  = 0
sample_list = []
def inputSelfAddress(self, name):
self.sample_list.append(name)
def __init__(self):
HTMLParser.__init__(self)

def handle_starttag(self, tag, attrs):
if tag=='div':
for name,value in attrs:
if (name == 'class')and(value == 'msgCnt'):
self.a_txt=True
if tag=='a':
for name, value in attrs:
if(name == 'href'):
match = pattern.match(value)
if(match):
if value in  self.sample_list:
return
else:
self.total=self.total+1
self.sample_list.append(value)

def handle_data(self, data):
if self.a_txt:
print (data)
self.a_txt=False
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
opener = urllib.request.build_opener()

opener.addheaders = [headers]

strAddress = "http://t.qq.com/xiaoRainie"
fp =opener.open(strAddress)

mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()
myparser = MyParser()
myparser.inputSelfAddress(strAddress)
myparser.feed(mystr)

print("总数:", myparser.total-11)
for i in range(int(myparser.total), 1, -1):
print(myparser.sample_list[i-1])
print("结束")
for i in range(int(myparser.total), 1, -1):
fp =opener.open(myparser.sample_list[i-1])
myparser.inputSelfAddress(myparser.sample_list[i-1])
mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()
myparser = MyParser()
myparser.feed(mystr)


这里简单使用了python 的html 分析模块,和url 处理模块!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: