入门级新闻爬虫
区块链资讯爬虫项目
项目需求分析
项目目标网站
链得得: 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改写