读书人

关于抓取网页数据!解决思路

发布时间: 2012-03-08 13:30:13 作者: rapoo

关于抓取网页数据!!!
昨天我去面试一家公司,那老板说你回去用jsp做一个项目,好了你就可以上班了.....

要求是可以从指定网页中抓取需要的数据。
例如:我在baidu上搜索“电视”,那么我要从他返回的页面上抽取他的关键字!(注意:只是抽取客户端显示网页的数据)

当着为老板提到这个题目时,我就想到了“网络爬虫”。
我是这样想的:1.做一个jsp页面,向其中输入一条信息,然后由它转发到baidu。
2.然后接收、下载返回的页面。
3.把返回的html网页当成一个xml文件那样逐条逐条的分析、过滤。
4.对过滤好的数据进行整理后,抽取其中我需要的部分,然后再返回到自己的jsp页面进行显示!

以上就是我的思路,请各位大神们指点指点,还有什么需要注意和改进的。
对于接收过来的页面,如何进行分析,过滤,我的思绪不是很清新,欢迎大家向我提各种建议,和提醒我那些需要注意的!


[解决办法]
建议楼主重新找一家公司。

这算什么嘛,面试时说说思路和想法就行了,还要回去做个东西给他?
[解决办法]
你可以让做一个中转站,接受客户的请求,然后自己向百度发送请求,然后拿到他的响应
然后对响应流做处理...至于处理的办法....
我自己也没有特别多的经验,你问的专家在他的网站上有他自己写的上传文件的类的源代码,里面有些对于这些流的处理的部分代码,你可以参考下.


[解决办法]
1 抓取
2 正则匹配

OVER
[解决办法]
来看热闹的。。话说回来老紫竹不是有个抓取网页的系统么。。还是我记错了。。
[解决办法]
我记得竹子是有个。你去他站点看看。 http://www.java2000.net
[解决办法]

探讨
1 抓取
2 正则匹配

OVER

[解决办法]
正则表达式
[解决办法]
感觉这个不是很难吧,,
首先用流的到网页的内容,,
其次就是把title定为关键字,,并用正则取的title值,,
[解决办法]
哈哈,这个好玩,我们项目经理那天还在说有空做做这样的东西玩玩。大部分代码有了,但不过是项目中的代码,没办法外露了,呵呵。
[解决办法]
建议你去看看车东的网站,http://www.chedong.com/tech/lucene.html
[解决办法]
探讨
引用:
1 抓取
2 正则匹配

OVER


那一个效率好呢???

[解决办法]
小偷
正则
[解决办法]
1.分析baidu 检索时如何发送请求
2.用你指定keyword伪造一个请求
3.使用apache common-httpclient(我忘了是不是这个)去获取baidu网页的内容
4.使用正则表达式对网页内容做抓取
[解决办法]
路过。。。学习了,好象前几天哪里刚看到过类似的问题,
AJAX抓取结果,正则等方法处理结果流,显示处理结果,对结果存在多页的情况怎么处理啊?
[解决办法]
多页时先用正则表达获取网页底下的页码的url 循环获取它 然后又是重复的发送网页请求 用正则获取想要的内容 lucene是个好东东 如果工作需要可以好好看看 不过 你既然要把keyword发给baidu baidu会给你把检索工作做了的 还是不用使用它了 学习这个东西需要时间
[解决办法]
正则~
[解决办法]
你用httpclient 模拟cookie 等 抓取整个数据 然后正则匹配,抓取相关的!我就做过这个东西!但有验证码的 有点困难!
[解决办法]
不知道,楼主解决了没有,建议你可以去看一下nutch,这是一个从 抓取网页到页面分析,到建索,到查询,都完整实现的搜索引擎,是开源的
引用:
引用:
1 抓取
2 正则匹配

OVER


那一个效率好呢???

楼主的思路,其实就 这两步的具体解释,1,抓取,就是楼主说的 :“网络爬虫”。
我是这样想的:1.做一个jsp页面,向其中输入一条信息,然后由它转发到baidu。
2.然后接收、下载返回的页面。
2,正则匹配就是指楼主提到的: 3.把返回的html网页当成一个xml文件那样逐条逐条的分析、过滤。
4.对过滤好的数据进行整理后,抽取其中我需要的部分
然后再返回到自己的jsp页面进行显示!这一步,其实就是nutch中的查询了
以上的东西,在nutch中都已经实现了,可以参考下

------解决方案--------------------


<a href="s?wd=%C9%AB%C4%D0%CD%F8&lm=0&si=&rn=10&tn=sitehao123&ie=gb2312&ct=0&cl=3&f=1&rsp=8&oq=%C9%AB%C4%D0%CD%BC">色男网</a>
这个抓取了以后,就别用正则了,用正则直接匹配到色男网很困难,
你可以查找字符串中<>的部分,去掉就行了。
用循环逐个比较字符,很容易的!
[解决办法]
或者再次匹配一下,">.+<"之间的部分
[解决办法]
http://manual.phpv.net/regular_expression.html这里有讲断言,看能用上不?
[解决办法]
刚才学了一下零宽断言,这样写
String patternStr = "(?<=<a\\s+href\\s*=\\s*(\"s\\?wd=[^\"]*\"|[^\\s>])\\s*>).+(?=</a>)";
[解决办法]


此人已经用.net实现

http://www.gjw123.com:8066/index.aspx


[解决办法]
返回的html网页从XML角度解析分析估计比较慢一点,可以采用正则可能会相对快点。
[解决办法]
从实际应用的角度讲:你要考虑一下你的数据源(比如你所说的baidu)当你的需求比较频繁的时候,它可能会封杀你的访问。
[解决办法]
首先,这个公司没有前途,也没有钱途。


请问,给你多少月薪,有6000以上就提供给你一个解决方案,没有就算了。

1.抓取数据;
2.正则处理,递归算法;

[解决办法]
用URL和HttpURLConnection
[解决办法]
这个东西,做可以。但是从实现基本功能到符合客户要求。要考虑到多线程操作,异常处理。时间处理等等。
LZ可以试着做一下。但是这个鸟公司不用考虑了。垃圾公司才会这样。
[解决办法]
路过 以前做过一个一样的程序 我用来抓取气象局的天气信息的
[解决办法]
楼主辛苦了,这几天我也在做,我是用.net做。这里比.net那里的回复多多了。
嗯 ,楼主想取那个链接中的那几个字只从那个链接中用正则是取不到的。你可以先写个自定义函数取出一段有特殊标志的html(因为网页上可能有很多这样的链接,所以你先缩小下范围,再分析提取) 再从这其中用正则取。

我要提取的数据中有个不在那个网页(要提取的那个网页)的html中,是在它里面的嵌入那个JS文件中,这个我到现在也没取出来。哎。

帮楼主顶一下,希望楼主的问题能解决。呵呵


[解决办法]
用Lucene+bot就可以做简单的搜索引擎,CSDN有源码,你可以去搜搜看,我以前看过,
原理是从一个网页开始抓取,提取你要的关键字和超连接,把他用Lucene保存起来,并且不断的递归抓取,原理很简单,代码也很简单,去看看
[解决办法]
用httpclient抓取,放入nutch分析。通过对nutch的htmlparse进行重写对标签进行抽取。
[解决办法]
[正则表达式应用] 提取彩票开奖数据
http://blog.csdn.net/Radar2006/archive/2006/12/30/1469328.aspx

[解决办法]
以前用C#做过一个类似的东西
1,抓取网页(注意编码)
2,匹配(正则)
3。利用匹配结果

感觉抓取、匹配不是很难,C#的正则效率不高,特别是没有匹配时,很耗CPU

[解决办法]
search.laozizhu.com 我的开源的抓取+Lucene搜索的项目
[解决办法]
获得网页,解析,获得,继续抓取
[解决办法]
一层抓取很简单,要是循着链接抓取多层的数据,那么楼主的写法是不科学的,数据量一大就死机了啊!要计算一下页面的PK值,可以参考一下Google的算法!
[解决办法]
用栈是不是好一点,待分析的链接都进栈,分析完了就清空栈,得到新的有用的部分进栈
[解决办法]
用栈是不是好一点,待分析的链接都进栈,分析完了就清空栈,得到新的有用的部分进栈
------解决方案--------------------


狠狠的抓

读书人网 >Java Web开发

热点推荐