首頁 >後端開發 >php教程 >怎么让爬虫智能的爬取网页的文章内容

怎么让爬虫智能的爬取网页的文章内容

WBOY
WBOY原創
2016-06-06 20:35:421516瀏覽

相關問題:如何提取網頁正文

最近写了一个爬虫 都过正则来匹配一个文章的内容这样有些麻烦,每个网站都要写正则。
1,怎么智能的实现网页文章内容的爬取?需要怎么做?
eg:
http://www.cnbeta.com/articles/385387.htm
http://www.ifanr.com/512005
2,抓取完以后怎么提取文章的标签?用于后于后面的相似文章推荐。

回复内容:

相關問題:如何提取網頁正文

最近写了一个爬虫 都过正则来匹配一个文章的内容这样有些麻烦,每个网站都要写正则。
1,怎么智能的实现网页文章内容的爬取?需要怎么做?
eg:
http://www.cnbeta.com/articles/385387.htm
http://www.ifanr.com/512005
2,抓取完以后怎么提取文章的标签?用于后于后面的相似文章推荐。

第一個問題和已有問題重複:如何识别並提取网页正文?。

第二個問題我寫過簡單的分詞算法,順便把出現頻率高的詞作爲關鍵詞提取了。即便是非常簡單的算法,對大多數網頁效果也還不錯。

不過分詞算法有很多現成的,你可以搜;
關鍵詞提取有很多現成的,你可以搜。。。

第二問貌似也與已有問題重複。

我之前用php写过一个采集插件。你这个叫网页正文提取。

算法大概如下:

1、把网页分解成很多DOM块。
2、分解的dom块。你要用一定的标准去丢弃,排除。比如有些dom快里面,都是大堆的链接这个一般是列表。可以丢弃。还有 算出文本密度(文本/html)的比值。比如(span,p,a,font)等标签所占的百分比。等等,经过多重过滤,最终会留下不多的几个dom块。再按照一定的规则过滤掉。正确率会比较高。

最重要的一个值也可以作为参考,我在一篇论文里面看到,用一段文字里面的句号多少来判定。
如果一大段文字里面,句号出现很多,那这个dom快很可能是内容快。

我之前写过一个java版的爬虫(Gworm),提出一点拙见,如果随便给你一个网址,智能的提取出网页的文章部分还是很困难的(也不是没方法吧,要用到统计概率的方法,也不能做到百分之百正确)。所以我之前的方案是使用css选择器提取内容,而不自己手写正则表达式,一个网站的css样式名一般都是很稳定的,这样一来一个网站的所有文章只需要一个提取规则,而且你第二个问题,获取文章标签,使用css选择器也可以轻松解决。介于题主使用python爬取,我不清楚python有什么库可以提供对DOM进行css选择的功能,但我相信一定是有的,对应我使用java版css选择器是Jsoup。

更新:刚google一下“python css selector”一大把结果。看下这篇文章吧https://pythonhosted.org/cssselect/。

python中有 pyquery
php有 phpquery
都很方便用jquery语法处理,

python中有scrapy框架,很不错,还有一个scrapinghub的云平台,可以省掉你的很多工作;

至于抓取标签,就涉及分类和聚类算法,这里面就有很多选择了

数据量不大的话,用 readability 的 api,省事。

https://www.readability.com/developers/api/parser

建议不要用正则来做html解析,学习一下lxml,然后在chrome浏览器的开发这模式就可以复制对应DOM节点的xpath直接在lxml,省了很多事,而且lxml解析html,xml性能杠杠的

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn