抓取网页新闻(写爬虫你一定要关注以下5个方面:1.如何抽象整个互联网)
优采云 发布时间: 2021-09-09 04:09抓取网页新闻(写爬虫你一定要关注以下5个方面:1.如何抽象整个互联网)
在编写爬虫时,必须注意以下5个方面:
1.如何抽象整个互联网
抽象为无向图,网页是节点,网页中的链接是有向边。
2.Fetching 算法
采用优先队列调度,区别于纯BFS。为每个网页设置一定的抓取权重,优先抓取权重较高的网页。对于权重设置,考虑的因素有:1.是否属于热门网站2.链接长度3.链接到网页的权重4.网页被指向的次数,等等。
进一步考虑,对于流行的网站,无限制爬取是不可能的,所以需要二次调度。先调度哪个网站要爬取,然后选择要爬取的网站后,调度在那个网站爬取哪些网页。这样做的好处是非常礼貌地限制了单个网站的抓取,同时也给了一些抓取其他网站网页的机会。
3.网络模型
分别考虑单机抓取和分布式抓取。对于Windows单机,可以使用IOCP完成端口进行异步爬取。这种网络接入方式可以最大限度地利用闲置资源。因为网络访问需要等待,如果简单地同时打开多个线程,计算机会花费大量时间在线程之间切换,处理获取的结果的时间会非常少。 IOCP可以达到用几个线程同步抓取几十个线程的效果。对于多机爬取,需要考虑机器的分布。比如爬亚洲的网站,用亚洲的电脑等等。
4.实时性能
新闻页面的爬取一般是由单独的爬虫来完成的。新闻网页抓取的爬虫的权重设置会与普通爬虫不同。首先,我们需要筛选新闻来源。有两种方法。一种是手动设置新闻源,比如新浪首页,第二种方式是通过机器学习。新闻源可以定义一个具有大量链接和频繁变化的链接内容的网页。从新闻源网页开始,向下爬取给定限制级别的网页,然后根据网页中的时间戳信息判断,即可添加新闻网页。
5.网页更新
如果一个网页被抓到,有些网页会继续变化,有些则不会。这里需要为网页爬取设置一些活力信息。当一个新的网页链接被发现时,其生命力时间戳信息应该是被发现的时间,表示需要立即抓取。一个网页被爬取后,其生命力时间戳信息可以设置为x分钟,以后再经过x分钟,可以根据这个时间戳判断该网页是否需要立即重新爬取。网页第二次抓取后,需要与之前的内容进行比较。如果内容相同,则下次抓取时间会延长,比如抓取前2x分钟,直到达到限制长度,比如半年或三年。月数(此值取决于您的爬网程序的能力)。如果是更新,时间需要缩短,例如x/2分钟才取。