入门级新闻爬虫

区块链资讯爬虫项目

项目需求分析

项目目标网站

链得得: http://www.chaindd.com/
金色财经: https://www.jinse.com
巴比特: http://www.8btc.com/news

爬虫目标分析

1,链得得和金色财经首页结构相对简单,资讯新闻的爬取特征明显。无需太多特殊抓取方法。
2,巴比特首页广告和外链较多,经过分析直接抓取新闻页。
3,3大网站都是动态网站,资讯需要通过selenium进行动态抓取
4,对于那些时效性不强的老旧资讯,可以适当地舍弃。只抓取发布时间较新地资讯

爬虫存储结构(数据库)

_id				: 唯一标识
spider_time		: 采集时间
news_link       :新闻原链接
news_img        :新闻原首页图
news_title      :新闻原标题
news_author     :作者
news_time       :来源发布时间(可能需要增加一个本地发布时间)
news_keyword    :关键字
news_source     :来源媒体
news_synopsis   :简介
news_content    :正文
status          :后台使用
category_id     : 后台使用
news_md5        : 正文md5值
爬虫开发说明

1,爬虫目标链接:['http://www.8btc.com/news','http://www.chaindd.com','https://www.jinse.com/']

2,利用selenium模拟浏览器访问,获取首页源代码,通过beautifulsoup获取HTML代码结构,并分析抓取最新资讯正文地链接地址列表。get_html_code方法

3,将取到地正文地址列表和数据库中地链接地址比对,筛选出没有抓取的正文。links_changed方法。

4,获取列表后再将每个正文地址传入get_html_code获取正文页源代码,在获取前会使用http_status判断链接是否可用

5,利用正则表达式和其他工具编写news_page_info方法,提取需要资源。并通过string_format,filter_html_tags方法过滤一些不必须要地html代码和信息。

6,将正文内容传入update_news_info方法,更新到数据库

7,8btc的网站使用正文MD5值去对比,从而判断新闻是否采集。

爬虫程序测试

暂无(已在服务器正常运行一周时间无报错,工作日每小时基本都有5条左右资讯)

PS: 项目地址:https://github.com/sylarjiang/spider
过几天有空了准备用scrapy改写

原文地址:https://www.cnblogs.com/ops-sylar/p/9496097.html