BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #12022同步于 2013/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖

【关于微博爬虫】【已写好】有哪位大侠写过爬微博的代码么,求

hainanlxs
2013/12/2镜像同步55 回复
悄悄更新一下,去年年底就写好了。这贴隔三差五被人顶一下,所以还是把我写好的那个方法过程和代码都跟大家分享交流一下吧。详见这里: http://blog.csdn.net/codingmirai/article/details/17754645 欢迎交流。 ——————————————————原帖分割线———————————————————————— 项目需要。用java写的,lz虽然笨,但是百度一下写个爬虫还是不难的,我写的那个简单的方法是httpconnect+inputsteam获取网页html代码,然后用正则匹配的办法抽出网页文字。(没有优雅地解析html,别笑。。)但是!!!这个方法在爬微博句子的时候就行不通了。大概原因是微博搜索页面html源码中包含微博句子的节点是被json格式封装过的,而且要命的是!!!包含整个页面微博的那条json封装一行居然有八万多个字符。。。我原来以为是不是readLine()一次不能读这么多字符,后来网上查了查,java 中String的长度可以达到2^31-1,远远超过八万。。 忘了说抛出的异常了。。异常就是这货java.io.IOException: Premature EOF 应该是文件提前结束的意思。。。 后来google了一下,有哥们说是当一次性写的数据比较大的时候,写的速度超过了读的速度。。。所以会报这个错。。。 于是,我悲剧地又尝试了一下 while(xxx.ready()){} 结果,是没报错了。。。可是都程序却一直跑不到头了。。。这意味着那八万多字符的一行活活卡死了么??到底是为啥啊。。。好憔悴好无力啊。。。 报错是这个: java.io.IOException: Premature EOF at sun.net.www.http.ChunkedInputStream.readAheadBlocking(Unknown Source) at sun.net.www.http.ChunkedInputStream.readAhead(Unknown Source) at sun.net.www.http.ChunkedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at Spider.<init>(Spider.java:44)----------end------------ at Spider.main(Spider.java:63) 代码是这个。。求帮忙看看啊 T T。。。 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Spider { private HttpURLConnection httpUrlConnection; private InputStream inputStream; private BufferedReader bufferedReader; String url; public Spider() throws MalformedURLException, IOException, InterruptedException { // url = "http://java.chinaitlab.com/net/890154.html"; // url = "http://www.baidu.com/"; url = "http://s.weibo.com/weibo/证监会&nodup=1"; httpUrlConnection = (HttpURLConnection) new URL(url).openConnection(); // 创建连接 System.out.println("---------start-----------"); /* * Thread thread = new Thread(this); thread.start(); thread.join(); */ try { httpUrlConnection.setRequestMethod("GET"); httpUrlConnection.setUseCaches(true); // 使用缓存 httpUrlConnection.connect();// 建立连接 inputStream = httpUrlConnection.getInputStream(); // 读取输入流 bufferedReader = new BufferedReader(new InputStreamReader( inputStream, "utf-8")); String s; File f = new File( "C:/Users/lixueshan/Desktop/清华实验室/项目2-情感分析/项目过程/data/spider/zhengjianhui.html"); FileWriter fw = new FileWriter(f); BufferedWriter bw = new BufferedWriter(fw); while ((s = bufferedReader.readLine()) != null) { while(bufferedReader.ready()){ System.out.println(s); break; // bw.write(s+"\r\n"); } } bw.close(); bufferedReader.close(); inputStream.close(); httpUrlConnection.disconnect(); } catch (Exception e) { e.printStackTrace(); } System.out.println("----------end------------"); } public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException { new Spider(); } }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Forest0579机器人#1 · 2013/12/3
清华大神又来闹了。
hainanlxs机器人#2 · 2013/12/3
我不是啊→_→……我是北邮大四弱狗T^TT^TT^T 【 在 Forest0579 的大作中提到: 】 : 清华大神又来闹了。
huangsy机器人#3 · 2013/12/3
这样不科学吧,试试新浪微博api? 【 在 hainanlxs 的大作中提到: 】 : 我不是啊→_→……我是北邮大四弱狗T^TT^TT^T
lzrak47机器人#4 · 2013/12/3
http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5
jiayidong机器人#5 · 2013/12/3
用下jsoup试试?
Emory机器人#6 · 2013/12/3
爬这个网站的。http://weibo.cn/duhaitao。 没有你说的jason的问题
hainanlxs机器人#7 · 2013/12/3
jsoup也试过……也会遇到一样的问题… 【 在 jiayidong 的大作中提到: 】 : 用下jsoup试试?
hainanlxs机器人#8 · 2013/12/3
暂时不想用api……想知道我那个方法问题在哪呢?一般网页都没问题,遇到微博就不行…… 【 在 huangsy 的大作中提到: 】 : 这样不科学吧,试试新浪微博api?
hainanlxs机器人#9 · 2013/12/3
嗯,但是我是想爬搜索页面……就是s.weibo.com底下的…… 【 在 Emory 的大作中提到: 】 : 爬这个网站的。http://weibo.cn/duhaitao。 没有你说的jason的问题