新浪微博内容抓取

最近抓取新浪微博的相关内容,遇到了很多问题也解决了很多问题。一开始我是使用httpclient爬虫抓取网页,但是后面发现微博网页内容很多都是嵌入到js中的;所以改用了htmlunit。下面重点总结几点我的经验吧!


httpclient、htmlunit、新浪微博API这三者的优缺点:

httpclient:

优点:爬虫比较稳定,相关使用方法很详细,可以参考《自己动手写网络爬虫》这本书。

缺点:没法解析js。

htmlunit:

优点:可以解析JS,可以模拟表单提交,使用方法比较简单。

缺点:爬虫不稳定,特别是解析JS时,可能会抛异常。

新浪微博API:

优点:提供各种内容的抓取。

缺点:限制太多。


由于我是使用htmlunit抓取新浪微博内容的,接下来讲几个爬虫遇到的问题。

一、模拟登录

想要模拟登陆,必须了解新浪微博登录的流程,因为新浪微博登录变化比较多,这个地方需要你抓包分析他的登录过程;建议你安装一个抓包工具,比如httpfox。

登录流程:

1.模拟用户名输入框焦点失去。向服务器发起一次请求。

2.获取第一步请求的返回的数据,提取参数。

3.加密密码。(新浪加密算法可能已经改变)

4.将第二步和第三步的相关参数封装到post请求,发起post请求

5.请求成功,获取cookie;保存cookie。

二、JS解析

方法一:调用htmlpage的save方法,可将获取的网页保存至本地,在读取该文件的时候你会发现,里面的js已经解析好了。

方法二:提取特定js,由于js里面的内容是有规律的;我们只要提取js中的html即可;然后通过htmlcleaner解析提取出来的html。

方法三:直接使用htmlpage提供的getByXpath方法,但是这个方法不稳定。可能获取不到元素对象。

三、验证码

方法一:

1.发起请求获取验证码图片

2.保存本地。

3.打开图片,手动输入验证码。

4.获取验证码值,请求认证。

方法二:

破解验证码。这个方法太难了!!!

方法三:

绕过验证码,抓取手机端的微博内容;当然啦!手机端的相对于web端的内容没那么详细,有的东西可能没有。


写到这感觉差不多,以后可能还会遇到其他问题。这些算前车之鉴吧!仅供参考!!代码就不贴了,写的太随意就不献丑了。

猜你喜欢

转载自blog.csdn.net/zhoujianfeng3/article/details/20720805