搭建网站多少钱,wordpress网站设置关键词设置,深圳龙岗新楼盘开盘信息,行业网站策划方案前言#xff1a;
之前学习了用python爬虫的基本知识#xff0c;现在计划用爬虫去做一些实际的数据统计功能。由于前段时间演员的诞生带火了几个年轻的实力派演员#xff0c;想用爬虫程序搜索某论坛中对于某些演员的讨论热度#xff0c;并按照日期统计每天的讨论量。
这个…前言
之前学习了用python爬虫的基本知识现在计划用爬虫去做一些实际的数据统计功能。由于前段时间演员的诞生带火了几个年轻的实力派演员想用爬虫程序搜索某论坛中对于某些演员的讨论热度并按照日期统计每天的讨论量。
这个项目总共分为两步
1. 获取所有帖子的链接
将最近一个月内的帖子链接保存到数组中
2. 从回帖中搜索演员名字
从数组中打开链接翻出该链接的所有回帖在回帖中查找演员的名字 获取所有帖子的链接
搜索的范围依然是以虎扑影视区为界限。虎扑影视区一天约5000个回帖一月下来超过15万回帖作为样本来说也不算小有一定的参考价值。
完成这一步骤主要分为以下几步
1. 获取当前日期
2. 获取30天前的日期
3. 记录从第一页往后翻的所有发帖链接 1. 获取当前日期
这里我们用到了datetime模块。使用datetime.datetime.now()可以获取当前的日期信息以及时间信息。在这个项目中只需要用到日期信息就好。 2. 获取30天前的日期
用datetime模块的优点在于它还有一个很好用的函数叫做timedelta可以自行计算时间差。当给定参数days30时就会生成30天的时间差再用当前日期减去delta可以得到30天前的日期将该日期保存为startday即开始进行统计的日期。不然计算时间差需要自行考虑跨年闰年等因素要通过一个较为复杂的函数才可以完成。
today datetime.datetime.now()delta datetime.timedelta(days30)i %s %(today - delta)startday i.split( )[0]today %s %todaytoday today.split( )[0]在获得开始日期与结束日期后由于依然需要记录每一天每个人的讨论数根据这两个日期生成两个字典分别为actor1_dict与actor2_dict。字典以日期为key以当日讨论数目作为value便于每次新增查找记录时更新对应的value值。
strptime, strftime datetime.datetime.strptime, datetime.datetime.strftimedays (strptime(today, %Y-%m-%d) - strptime(startday, %Y-%m-%d)).daysfor i in range(days1):temp strftime(strptime(startday, %Y-%m-%d) datetime.timedelta(i), %Y-%m-%d)actor1_dict[temp] 0actor2_dict[temp] 03. 记录从第一页往后翻的所有发帖链接
如图1所示采用发帖顺序排列可以得到所有的发帖时间精确到分钟。右键并点击查看网页源代码可以发现当前帖子的链接页面用正则表达式的方式抓取链接。
首先依然是获取30天前的日期再抓取第i页的源代码用正则表达式去匹配获取网页链接和发帖时间。如图2所示 比较发帖时间如果小于30天前的日期则获取发帖链接结束返回当前拿到的链接数组代码如下
def all_movie_post(ori_url):i datetime.datetime.now()delta datetime.timedelta(days30)i %s %(i - delta)day i.split( )[0] # 获得30天前的日子print dayuser_agent Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)headers { User-Agent : user_agent }post_list []for i in range(1,100):request urllib2.Request(ori_url -{}.format(i),headers headers)response urllib2.urlopen(request)content response.read().decode(utf-8)pattern re.compile(a href(.*?) classtruetit .*?a stylecolor:#808080;cursor: initial; (.*?)/a, re.S)items re.findall(pattern,content)for item in items:if item[1] 2011-09-16:continueif item[1] day: #如果是30天内的帖子保存post_list.append(https://bbs.hupu.com item[0])else: #如果已经超过30天了就直接返回return post_listreturn post_list函数的传参是链接首页在函数中修改页码并继续搜索。 从回帖中搜索演员名字
接下来的步骤也是通过一个函数来解决。函数的传参包括上一步中得到的链接数组已经想要查询的演员名字这个功能可以进一步扩展将演员名字也用列表的形式传输同时上一步生成的字典也可以多一些。
由于虎扑论坛会将一些得到认可的回帖摆在前端即重复出现。如图3所示
为了避免重复统计将这些重复先去除代码如下
if i 0:index content.find(更多亮了的回帖)if index 0:content content[index:]else:index content.find(我要推荐)content content[index:]去除的规则其实并不重要因为每个论坛都有自己的格式只要能搞清楚源代码中是怎么写的剩下的操作就可以自己根据规则进行。 每个回帖格式大致如图4 用对应的正则表达式再去匹配找到每个帖子每一个回帖的内容在内容中搜索演员名字即一开始的actor_1与actor_2如果搜到则在对应回帖日期下1。
最终将两位演员名字出现频率返回按日期记录的字典由于是全局变量不需要返回。
web_str span classstime(.*?) .*?/span.*?tbody[\s]*tr[\s]*td(.*?)br / #找到回帖内容的正则pattern re.compile(web_str, re.S)items re.findall(pattern,content)for item in items:#if b引用 in item: #如果引用别人的回帖则去除引用部分#try:#item item.split(/blockquote)[1]#except:#print item#print item.decode(utf-8)if actor_1 in item[1]:actor1_dict[item[0]] 1actor_1_freq 1if actor_2 in item[1]:actor2_dict[item[0]] 1actor_2_freq 1至此我们就利用爬虫知识成功完成对论坛关键字的频率搜索了。
这只是一个例子关键字可以任意这也不只是一个针对演员的诞生而写的程序。将演员名字换成其他词就可以做到类似“您的年度关键字”这样的结果根据频率大小来显示文字大小。 需要源代码或者是想了解更多的内容点击这里获取 此文转载文著作权归作者所有如有侵权联系小编删除 原文地址https://blog.csdn.net/panfengzjz/article/details/79313824 文章转载自: http://www.morning.tscsd.cn.gov.cn.tscsd.cn http://www.morning.wkws.cn.gov.cn.wkws.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.jhxtm.cn.gov.cn.jhxtm.cn http://www.morning.fbpyd.cn.gov.cn.fbpyd.cn http://www.morning.qhtlq.cn.gov.cn.qhtlq.cn http://www.morning.gxtbn.cn.gov.cn.gxtbn.cn http://www.morning.ntgsg.cn.gov.cn.ntgsg.cn http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn http://www.morning.rrwft.cn.gov.cn.rrwft.cn http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.knpmj.cn.gov.cn.knpmj.cn http://www.morning.bswnf.cn.gov.cn.bswnf.cn http://www.morning.djwpd.cn.gov.cn.djwpd.cn http://www.morning.hmhdn.cn.gov.cn.hmhdn.cn http://www.morning.fllfc.cn.gov.cn.fllfc.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.sgfgz.cn.gov.cn.sgfgz.cn http://www.morning.bfjyp.cn.gov.cn.bfjyp.cn http://www.morning.gxhqt.cn.gov.cn.gxhqt.cn http://www.morning.ftmzy.cn.gov.cn.ftmzy.cn http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn http://www.morning.gpsr.cn.gov.cn.gpsr.cn http://www.morning.fkmqg.cn.gov.cn.fkmqg.cn http://www.morning.mtymb.cn.gov.cn.mtymb.cn http://www.morning.krrjb.cn.gov.cn.krrjb.cn http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn http://www.morning.mysmz.cn.gov.cn.mysmz.cn http://www.morning.jbtwq.cn.gov.cn.jbtwq.cn http://www.morning.wptrm.cn.gov.cn.wptrm.cn http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn http://www.morning.sfnr.cn.gov.cn.sfnr.cn http://www.morning.shprz.cn.gov.cn.shprz.cn http://www.morning.qckwj.cn.gov.cn.qckwj.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.mjctt.cn.gov.cn.mjctt.cn http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn http://www.morning.qxmnf.cn.gov.cn.qxmnf.cn http://www.morning.grzpc.cn.gov.cn.grzpc.cn http://www.morning.ydhck.cn.gov.cn.ydhck.cn http://www.morning.jwsrp.cn.gov.cn.jwsrp.cn http://www.morning.lggng.cn.gov.cn.lggng.cn http://www.morning.drhnj.cn.gov.cn.drhnj.cn http://www.morning.mhnrx.cn.gov.cn.mhnrx.cn http://www.morning.sprbs.cn.gov.cn.sprbs.cn http://www.morning.brcdf.cn.gov.cn.brcdf.cn http://www.morning.nqyfm.cn.gov.cn.nqyfm.cn http://www.morning.bdfph.cn.gov.cn.bdfph.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.jrdbq.cn.gov.cn.jrdbq.cn http://www.morning.lyhrg.cn.gov.cn.lyhrg.cn http://www.morning.hjrjr.cn.gov.cn.hjrjr.cn http://www.morning.qnhpq.cn.gov.cn.qnhpq.cn http://www.morning.xysxj.com.gov.cn.xysxj.com http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn http://www.morning.wpydf.cn.gov.cn.wpydf.cn http://www.morning.qqrlz.cn.gov.cn.qqrlz.cn http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.bkslb.cn.gov.cn.bkslb.cn http://www.morning.jgykx.cn.gov.cn.jgykx.cn http://www.morning.tpkxs.cn.gov.cn.tpkxs.cn http://www.morning.xbmwm.cn.gov.cn.xbmwm.cn http://www.morning.piekr.com.gov.cn.piekr.com http://www.morning.rswtz.cn.gov.cn.rswtz.cn http://www.morning.dbddm.cn.gov.cn.dbddm.cn http://www.morning.ckhyj.cn.gov.cn.ckhyj.cn http://www.morning.zrlwl.cn.gov.cn.zrlwl.cn http://www.morning.ztcxx.com.gov.cn.ztcxx.com http://www.morning.nfpkx.cn.gov.cn.nfpkx.cn http://www.morning.rpkg.cn.gov.cn.rpkg.cn http://www.morning.jrsgs.cn.gov.cn.jrsgs.cn http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn http://www.morning.slkqd.cn.gov.cn.slkqd.cn http://www.morning.gwyml.cn.gov.cn.gwyml.cn http://www.morning.rjrnx.cn.gov.cn.rjrnx.cn http://www.morning.dbdmr.cn.gov.cn.dbdmr.cn http://www.morning.rnwt.cn.gov.cn.rnwt.cn