新浪热门微博、热门话题抓取

A.为什么要做这个功能?

  最近微博和微信开放平台的二次开发整的貌似蛮火,但做过微博开放平台的二次开发的人都会知道,新浪提供的微博访问接口并不是那么完美,有众多限制(调用频率限制、接口级别限制),对于没有经过审核通过高级接口的用户而言,要想通过API来实现这个功能,我只能说一句呵呵。

B.实现方式与步骤?

1.WinForm

  步骤1:调用内置控件WebBrowser对象来加载热门微博地址。

  步骤2:
 在后台用正则表达式解析要抓取HTML的片段,复杂的抓取往往需要程序员的正则表达式的掌握程度比较好。

  步骤3:数据自由处理。

2.WebForm

  对于正则表达式不熟的人来说,临时去学这个是需要点时间的,不过利用脚本的Dom操作一样可以完成HTML的规则匹配。那是不是直接把请求URL放到iframe标签src属性中,然后在父页面调用操作iframe页面的元素从而取到数据,就万事大吉了?呵呵,web开发人都知道有个蛋疼的问题叫:跨域访问,权限不足。网上一搜,目前找到的只有jquery.xdomainajax.js。有兴趣的可以查一下它的API,从这几次对这个插件的使用情况来看,并不乐观,原因是并非所有url的跨域请求都会得到相应的回报。

  所以最终还是出了以下步骤:

  步骤1:利用WebClient或者WebRequest或者HttpWebRequest请求热门微博地址,出于有些url的http请求的头Headers的必须有特殊要求,因此推荐选用HttpWebRequest。

  步骤2:由于抓取的网址的返回的数据类型不定,它可能是一段html格式的文本,可能是一段具有json格式的文本,因此进行相应的转换后,我只取出最终需要解析的那部分HTML,下载到本地站点某文件夹下。

  步骤3:下载完成html后,设置Iframe的src=该html文件的url路径,当iframe加载完成后执行Dom元素读取即抓取动作。

  步骤4:  数据自由处理

C.碰到的问题与解决方案?

  1.新浪微博的热门微博显示具有ajax滚动延迟加载效果,即当鼠标滚动到滚动条最底部则会异步刷新出之后的10条热门微博。若不进行相应处理,则只可能抓到用户还没有滚屏时候的微博,也就只有1页微博,那如何抓滚屏之后的微博呢?

  Solution:利用Fildder,分析每次滚动时候请求的地址,是有规律可言的。并再次对该地址进行请求拿到新的请求的结果并处理。利用此方法均可解决网页在异步加载的数据的抓取问题。

   2.抓取新浪热门话题url时,返回的json中没有数据,而用Fildder监控则存在数据

  Solution:抓取热门话题时候,通过Fildder监控http headers发现X-Requested-With=XMLHttpRequest,必须在HttpWebRequest请求过程中把这个加到头部中:myReq.Headers.Add("X-Requested-With",
"XMLHttpRequest");

时间: 2024-10-12 18:28:38

新浪热门微博、热门话题抓取的相关文章

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

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

新浪明星日志推荐系统——爬虫爬取数据(1)

今天有了一个想法,想自己用Python写一个新浪明星日志推荐系统 那么第一步要完成的工作就是获得新浪明星日志的数据,于是自己写了一个爬虫,实现的功能是爬取新浪明星日志的作者,推荐的文章链接,以及作者日志列表或者首页链接,具体程序如下: # -*- coding: utf-8 -*- """ Created on Wed May 20 13:55:00 2015 @author: Administrator """ import urllib im

新站怎样快速被百度抓取

如何让百度快速抓取?相信很多建新站的新手站长们都会对这个问题发愁,下面就是我的一些心得,因为这个站我也建了快有3个月了,从买下这个域名和空间一直到今天发这篇文章为止快有三个月时间了.这两月啥也没干就是成天鼓掏这个网站,两个月也走了很多弯路.其实有些弯路是多走的,因为我根本没有按照前辈的老路去走,而是尝试了很多错误的方法和路子才逐渐走到正确的道路上来的.人有些时候就是这样,不撞南墙不回头.好了,下面就看看我怎么记百度来快速抓取的方法: seo实战教程 一.发好的文章主动提交到百度,主动邀请百度蜘蛛

新浪明星日志推荐系统——爬虫爬取数据(2)

由于之前的改造,现在将爬虫的功能做了一些改变,具体实现的功能是将推荐的日志全部抓取下来,并存放在以文章标题命名的文件中,代码如下: import urllib import os,re import sys from bs4 import BeautifulSoup reload(sys) sys.setdefaultencoding("utf-8") def if_str(str_t): if re.search(r"^.*[a-zA-Z].*",str_t)==

新浪明星日志推荐系统——爬虫爬取数据(3)

现在进行推荐的第三步: 1:利用数据的格式如下: 2:编程语言采用的是Java,源代码如下: package top10; import java.util.*; import java.io.*; public class top { public static void top(String []one,String []two,String []three){ int []one1 = new int[15688]; for(int i =0;i<15687;i++) { one1[i]=

新站帮助 Google 查找、抓取网站和创建索引的最佳做法

遵循这些指南有助于 Google 查找您的网站.将其编入索引和进行排名.即使您选择不采纳这些建议,我们也强烈建议您对"质量指南"多加留意,其中简要说明了可能导致网站从 Google 索引中被彻底删除或者被系统或手动标识为垃圾网站的一些违规行为.如果一个网站被标识为垃圾网站,那么它可能不会再出现在 Google.com 或任何 Google 合作伙伴网站的搜索结果中. 设计和内容指南 技术指南 质量指南 在您的网站创建完成后: 访问 http://www.google.com/submi

一篇文章教会你使用Python定时抓取微博评论

[Part1——理论篇] 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存.首先从微博api寻找抓取评论的接口,如下图所示. 但是很不幸,该接口频率受限,抓不了几次就被禁了,还没有开始起飞,就凉凉了. 接下来小编又选择微博的移动端网站,先登录,然后找到我们想要抓取评论的微博,打开浏览器自带流量分析工具,一直下拉评论,找到评论数据接口,如下图所示. 之后点击“参数”选项卡,可以看到参数为下图所示的内容

Ajax异步数据抓取

1.简介 1 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览 2 器中可以看到正常显示的页面数据,但是使用requests得到的结果并没有.这是因为requests获取的 3 都是原始的HTML文档,而浏览器中的页面则是经过JavaScript处理数据后生成的结果,这些数据的 4 来源有多种,可能是通过ajax加载的,可能是包含在HTML文档中的,也可能是经过JavaScript和特 5 定算法计算后生成的. 6 对于第一种情况,数据加载是一种异步加

Android 仿QQ、新浪相册的实现

在移动应用中,很多时候都会用到图片选择.图片裁剪等功能.最近我也在准备一个开源的相册项目,以方便以后开发应用的时候使用,也尽可能的方便需要的人.一个完整的相册,应该包含相册列表.图片列表.图片的单选和多选.图片的裁剪.拍照.多选图片的大图预览等功能.这也是我这个项目将要包含的功能.在本篇博客中,将会讲述下我在这个项目中相册列表和图片列表的大致实现. 实现效果 结合几个常用的APP中的相册效果,当前项目中已经实现了一些基本的功能和UI,在后续完善的过程中还会有所变动.项目在Github上开源,欢迎