1-3 爬取微博上电影主题的热度(主题的阅读数和讨论数)

 1 weiboHeat.py
 2 #-*- coding:utf-8 -*-
 3 ‘‘‘
 4 该脚本可以从wap版的微博网站上爬取热门电影的信息,
 5 尤其是其中的电影主题讨论数和阅读数
 6 ‘‘‘
 7 import json
 8 import requests
 9 from pandas import DataFrame
10 import time
11 headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36‘}
12 i=1  #网址中的规律项
13 movies=[]  #初始化电影列表
14 csvName=‘wh_allmovies.csv‘  #将要输入的文件的名字
15 cards=[1]  #为了冷启动,将cards列表设置为非空
16 #此处为动态加载问题,当可以从网页中获取内容时,不停循环
17 while(cards!=[]):
18     try:
19         if i==1:
20             j=2
21         else:
22             j=0
23         url=‘http://m.weibo.cn/page/pageJson?containerid=&containerid=‘ 24             ‘100803_ctg1_100_-_page_topics_ctg1__100&luicode=10000011&lfid=‘ 25             ‘100808d35a54c4ae10c8311e64ae96c776f206&v_p=11&ext=&fid=‘ 26             ‘100803_ctg1_100_-_page_topics_ctg1__100&uicode=‘ 27             ‘10000011&next_cursor=&page=‘+str(i)
28         resp=requests.get(url,headers=headers)
29         time.sleep(0.1)
30         content=json.loads((resp.text).decode(‘ascii‘).encode(‘utf-8‘))  #响应的text属性是json格式的数据
31         #通过分析json格式文本内容,发现规律#########
32         cards=content[‘cards‘]
33         card=cards[j]
34         card_group=card[‘card_group‘]
35         ############################################
36         movies=movies+card_group  #将card_group为每一次循环得到的包含10个电影信息的list列表
37         #将该列表不断添加到movies列表中,card_group的每一项为一个包含电影各种信息的字典
38         print i*10  #作为标记使用
39         i+=1  #每次循环i都加1
40     except:
41         print ‘Error‘
42     finally:
43         movies_df = DataFrame(movies)  #每次循环都将movies列表转换为DataFrame格式文件,然后存入文件
44         # df1 = DataFrame({‘title‘: movies_df.ix[:, ‘card_type_name‘], ‘heat‘: movies_df.ix[:, ‘desc2‘],
45         #                  ‘scheme‘: movies_df.ix[:, ‘scheme‘],
46         #                  ‘pic‘: movies_df.ix[:, ‘pic‘]})
47         movies_df.to_csv(csvName, index=False, encoding=‘utf-8‘)
 1 weiboHeat_treatment.py
 2 #-*- coding:utf-8 -*-
 3 ‘‘‘
 4 该脚本可以针对得到的weiboHeat.csv文件进行处理
 5 添加电影主题讨论数discussNum、主题阅读数readNum、以及通过阅读数得到的热度分数
 6 ‘‘‘
 7 import pandas as pd
 8 from pandas import DataFrame
 9 df=pd.read_csv(‘wh_allmovies.csv‘)
10 # 取出所需要的列,并加上自定义的列名
11 df1=DataFrame({‘title‘:df.ix[:,‘card_type_name‘],‘heat‘:df.ix[:,‘desc2‘],
12                ‘scheme‘:df.ix[:,‘scheme‘],
13                ‘pic‘:df.ix[:,‘pic‘]})
14 #从DataFrame数据结构中取出heat列
15 heat=df1.ix[:,‘heat‘]
16
17 #函数:将形如‘2.4亿阅读’的字符串转换成int格式的2400000000
18 #注意:输入的字符串为unicode编码格式
19 def getNum(heat):
20     if u‘亿‘ in heat:
21         temp=list(heat)  #将字符串转换成list列表,方便后续删除中文字符操作
22         temp.pop()
23         temp.pop()
24         temp.pop()  #执行该语句三次,将形如‘亿阅读’的字符串去掉
25         temp=‘‘.join(temp)  #将删除中文之后的剩余部分结合,得到的是str格式字符串
26         temp=float(temp)*100000000  #首先将str转换为float格式,再乘以1亿
27     elif u‘万‘ in heat:
28         temp = list(heat)
29         temp.pop()
30         temp.pop()
31         temp.pop()
32         temp = ‘‘.join(temp)
33         temp = float(temp) * 10000  #乘以1万
34     else:
35         temp = list(heat)
36         temp.pop()
37         temp.pop()
38         temp = ‘‘.join(temp)
39         temp = float(temp)  #不需要乘
40     return int(temp)  #将返回的值转换成int格式的数字
41
42 #函数:根据电影的阅读量,得到电影的得分
43 def getScore(i):
44     if i>=0 and i<100000000:
45         return 1
46     elif i>=100000000 and i<300000000:
47         return 2
48     elif i>=300000000 and i<500000000:
49         return 3
50     elif i>=500000000 and i<700000000:
51         return 4
52     elif i>=700000000:
53         return 5
54     else:
55         return None
56
57 discussNum=[]  #初始化讨论数列表
58 readNum=[]  #初始化阅读数列表
59 score_weibo=[]  #初始化微博热度的得分列表
60 for i in range(len(heat)):
61     heat_i=heat[i]  #取出每个热度项
62     # 将每个热度项转换成unicode编码,并按空格切分成长度为2的list
63     heat_iList=(heat_i.decode(‘utf-8‘)).split()
64     heat_discuss=heat_iList[0] #list的第一项为讨论数,形如‘275.8万讨论’
65     heat_read=heat_iList[1] #list的第二项为阅读数,形如‘13亿阅读’
66     discussNum.append(getNum(heat_discuss))  #调用getNum函数进行格式转换后,添加到列表中
67     readNum.append(getNum(heat_read))
68     score_weibo.append(getScore(getNum(heat_read)))  #调用getScore函数,将得到的分数添加到列表中
69 df2=DataFrame({‘discussNum‘:discussNum,‘readNum‘:readNum,‘score_weibo‘:score_weibo})  #得到DataFrme格式
70 df3=pd.concat([df1,df2],axis=1)
71 df3.to_csv(‘wh_allmovies_discussReadScore.csv‘,index=False)
时间: 2024-10-14 13:34:09

1-3 爬取微博上电影主题的热度(主题的阅读数和讨论数)的相关文章

Python3.5:爬取网站上电影数据

首先我们导入几个pyhton3的库: from urllib import requestimport urllibfrom html.parser import HTMLParser 在Python2和Python3之间一个重要区别就是,在Python2有urllib,urllib2两个库,在Python3整合到一起,里面的函数方式也有一点变,先定义一个函数,将header,url,request,都打包成一个函数方便调用,且看下面代码: def print_movies(url): # 伪装

[python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对比,你可以进一步加深Python爬虫的印象.同时,文章给出了我以前关于爬虫的基础知识介绍,方便新手进行学习.        总之,希望文章对你有所帮助,如果存在不错或者错误的地方,还请海涵~ 一. DOM树结构分析 豆瓣Top250电影网址:https://movie.douban.com/top2

爬虫实例(一)——爬取微博动态

首语:开始准备认真学习爬虫了,先从基础的开始学起,比如先爬取微博的个人动态. 两个难点:获取动态加载的内容和翻页这两项操作. 对象:何炅的个人 需要的URL: 首页url:https://weibo.com/hejiong?is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=1#feedtop 我们可以直接用get方法请求该URL,但是注意要带上cookies,这样才能得到网页信息.cookies

爬取微博热门话题

1 介绍 本文主要介绍爬取微博热门话题及话题下的微博.这是我毕业设计的数据来源,在这里先记录一下进展. 我买的阿里云服务器,[轻量应用服务器]预装宝塔Linux面板--三个月¥28.5.配置如下: 用起来还是很方便的,宝塔面板可视化文件上传下载,搭建web网站简便,可以定时爬虫程序.在阿里云服务器进行运行爬虫代码并连接到mysql数据库,运行环境如下: 类型 版本 服务器 CentOS Linux 7.4.1708 (Core) web服务器 Apache 2.4 数据库 mysql5.7 PY

python爬虫爬取微博评论案例详解

这篇文章主要介绍了python爬虫爬取微博评论,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 数据格式:{"name":评论人姓名,"comment_time":评论时间,"comment_info":评论内容,"comment_url":评论人的主页} 以上就是我们需要的信息. 具体操作流程: 我们首相将主页获取完成以后,我们就会发现,其中 的内容带有相

使用python爬取MedSci上的影响因子排名靠前的文献

使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn/sci的交互过程.可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息.当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服务器返回查询结果 然后,将查询到的结果使用正则表达式提取出需要的数据. 最后将提取出的数据输出到文

Python编写网页爬虫爬取oj上的代码信息

OJ升级,代码可能会丢失. 所以要事先备份. 一开始傻傻的复制粘贴, 后来实在不能忍, 得益于大潇的启发和聪神的原始代码, 网页爬虫走起! 已经有段时间没看Python, 这次网页爬虫的原始代码是 python2.7版本, 试了一下修改到3.0版本, 要做很多包的更替,感觉比较烦,所以索性就在这个2.7版本上完善了. 首先观赏一下原始代码,我给加了一些注释: # -*- coding: cp936 -*- import urllib2 import urllib import re import

用Python爬取网页上的小说,让你从此告别书荒!

人生苦短,我用Python.有道爱看小说的小伙伴们,在看小说的期间总会遇到那么一段书荒期,在这段期间想看书却找不到,要么就是要VIP,要么就是下载不了.所以学会爬取网站上的小说是很有必要的,今天就以爬取笔趣阁小说为例,进行网页上小说的爬取.首先当我们打开笔趣阁的网页时,我们会看到很多的小说列表,如下图所示: ? 就拿爬取图上所示的小说来说,我们要进行以下的几个步骤: 爬取小说首先要构建请求表头: ? 然后我们的获取下载链接: ? 接下来我们进行文章内容的爬取: ? 最后我们将爬取来的小说写入到文

【python网络编程】新浪爬虫:关键词搜索爬取微博数据

上学期参加了一个大数据比赛,需要抓取大量数据,于是我从新浪微博下手,本来准备使用新浪的API的,无奈新浪并没有开放关键字搜索的API,所以只能用爬虫来获取了.幸运的是,新浪提供了一个高级搜索功能,为我们爬取数据提供了一个很好的切入点. 在查阅了一些资料,参考了一些爬虫的例子后,得到大体思路:构造URL,爬取网页,然后解析网页 具体往下看~ 登陆新浪微博,进入高级搜索,如图输入,之后发送请求会发现地址栏变为如下:    http://s.weibo.com/weibo/%25E4%25B8%25A