数据

来爬一爬百度、腾讯、搜狗指数

2019-07-17  本文已影响0人  周一ing

本篇目标

为了计算某个明星的一段时间综合热度,需要爬取该明星的百度指数、腾讯指数、搜狗指数。当然也可以应用在其他词条的热度啦,这里的时间设置是2019.01.01-2019.03.31,可自行设置所需时间。

以搜狗指数为例:name是所要搜索词条,allweixin是爬取结果


输入输出文件 name文件

百度指数

搜狗指数:这里的目标是得到平均值,官网上鼠标悬浮的时候会显示平均值,但这里截图无法显示。


image.png

腾讯指数

环境及导入库说明

# -*- coding: utf-8 -*-
import csv
import os
import requests, json
import sys
reload(sys)
sys.setdefaultencoding('utf8')

百度指数


搜狗指数

def get_windex(index_list):
    '''
    获取微信指数
    输入示例
    index_list = ['李汶翰','赵品霖']
    输出,avg代表对应微信指数值
    data_list = ['name':'李汶翰','avg': 0]
    '''
    headers = {
        'user-agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
        'cache-control': "no-cache",
        #这里的cookie可以在headers里找到粘贴过来
        'cookie':''
        }

    data_list = []

    for name in index_list:
        #去除名字空格
        name = name.strip()        
        #这里的时间取20190101到20190331,在startDate是开始时间,endDate是结束时间
        url = 'http://zhishu.sogou.com/getDateData?kwdNamesStr=%s&startDate=20190101&endDate=20190331&dataType=SEARCH_ALL&queryType=INPUT'%name        
        response = requests.get(url, headers = headers)
        content = json.loads(response.text)
        
        data = {}
        #python2本身内部代码的编码有str和unicode两种编码,然而文件写入到windows系统时候,windows上的是gb2312编码,所以就导致了乱码问题
        #所以写入中文字符的时候,先把python里面的中文字符串decode成utf-8,再encode为gbk编码
        data['name'] = name.decode('utf-8').encode('gbk')
        try:
            data['avg'] = content['data']['infoList'][0]['avgPv']
            data_list.append(data)
        #搜索不到或者出错指数值设为0
        except Exception, e:
            if hasattr(e, "code"):
                print e.code
            if hasattr(e, "reason"):
                print e.reason
            data['avg'] = 0
            data_list.append(data)
            continue
            
    #新建allweixin.csv,并将结果写入
    fieldnames = ['name','avg']
    file2 = 'H:/shixi/result/allweixin.csv'
    main_file = operate_file(file2,fieldnames) 
    main_file.creat_csv()
    main_file.write_csv(data_list) 

#封装了一个读写csv的类
class operate_file():
    def __init__(self, file, fieldnames):  
        self.fieldnames = fieldnames
        self.filename = file

    def creat_csv(self):
        with open(self.filename, 'wb') as csvfile:
            fieldnames = self.fieldnames
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 
            writer.writeheader()

    def write_csv(self, info_list):
        with open(self.filename, 'ab') as csvfile:
            fieldnames = self.fieldnames
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)     
            for hotel in info_list:
                try:
                    writer.writerow(hotel)
                except Exception,e:
                    print e
                    #print hotel
                    #print self.fieldnames

if __name__ == "__main__":

    index_list = []
    file = 'H:/shixi/result/name.csv'
    for line in csv.DictReader(open(file)):     
        index_list.append(line['name'].decode('gbk').encode('utf-8'))
    get_windex(index_list)
上一篇 下一篇

猜你喜欢

热点阅读