本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接)
源码获取请联系:1563178220@qq.com

简介

互联网有海量的新闻,如何基于关键字检索相关新闻,并将新闻内容存储到数据库呢,以新浪新闻为例,如下图所示,输入关键字爬取历史新闻,可以看到历史新闻的数量有很多,因此采用单线程的方式,无法满足需求,可采用多线程的方式采集数据。

程序框架

主程序

package main;
/*** @author:合肥工业大学 管理学院 钱洋* @email:1563178220@qq.com* @ */
/** 多线层爬取新闻id,标题,url**/
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;import db.MYSQLControl;
import model.NewInfo;
import utils.URLFecter;
import utils.Utils;
public class FirstNewsThread extends Thread{String Starturl = "";//构造函数,初始化使用public  FirstNewsThread (String Starturl){this.Starturl = Starturl;}public void run(){//针对每个url开始爬取HttpClient client = new DefaultHttpClient();System.out.println(Starturl);List<NewInfo> newinfo=new ArrayList<NewInfo>();try {newinfo=URLFecter.htmlFirstGet(client, Starturl);} catch (ParseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}for (NewInfo info:newinfo) {System.out.println(info.getNewsurl()+"\t"+info.getNewsid()+"\t"+info.getNewstitle());}MYSQLControl.insertnewsurl_info(newinfo);}public static void main(String[] args) throws SQLException{//提供你的关键字String keyword="金融";//转化成网页字符String keywordtransform=Utils.toUrlString(keyword,"gbk");//创建固定大小的线程池ExecutorService exec = Executors.newFixedThreadPool(5);for (int i = 1; i < 1000; i++) {String starturl="http://search.sina.com.cn/?q="+keywordtransform+"&range=all&c=news&sort=time&col=&source=&from=&country=&size=&time=&a=&"+ "page="+i+"&pf=2131425467&ps=2134309112&dpc=1";//执行线程exec.execute(new FirstNewsThread(starturl));}//线程关闭exec.shutdown();}
}

程序运行结果

数据库结果展示:

多线程新浪新闻搜索网络爬虫-基于关键字相关推荐

  1. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  2. python爬取新浪新闻首页_Python爬虫学习:微信、知乎、新浪等主流网站的模拟登陆爬取方法...

    微信.知乎.新浪等主流网站的模拟登陆爬取方法 摘要:微信.知乎.新浪等主流网站的模拟登陆爬取方法. 网络上有形形色色的网站,不同类型的网站爬虫策略不同,难易程度也不一样.从是否需要登陆这方面来说,一些 ...

  3. Python网络爬虫爬取新浪新闻

    笔者最近由于需要研究互联网新闻,于是基于邱老师的网络爬虫实战,写了一个爬取新浪新闻的爬虫,爬取的信息有: 新闻标题 来源url 发布时间 正文 编辑者 与邱老师的爬虫相比有以下几点不同: 没有爬取新闻 ...

  4. 使用python网络爬虫爬取新浪新闻(一)

    使用python网络爬虫爬取新浪新闻 第一次写博客,感觉有点不太习惯!不知道怎么突然就想学学爬虫了,然后就用了一天的时间,跟着教程写了这个爬虫,!不说废话了,我将我从教程上学习的东西整个写下来吧,从头 ...

  5. 网络爬虫-----python爬取新浪新闻

    思路:先爬取首页,然后通过正则筛选出所有文章url,然后通过循环分别爬取这些url到本地 #python新闻爬虫实战 import urllib.request import re url = 'ht ...

  6. 【API爬虫】30分钟百万条新浪新闻信息爬取。python得极速之旅

    请参考源码,文字是最先得想法,没有再做更改.源码以更新 前期准备:requests库:使用pip install requests 安装. pymongo库:使用pip install pymongo ...

  7. Python爬虫爬取新浪新闻内容

    首先感谢丘祐玮老师在网易云课堂的Python网络爬虫实战课程,接下来也都是根据课程内容而写.一来算是自己的学习笔记,二来分享给大家参考之用. 课程视频大概是在16年11月录制的,现在是18年2月.其中 ...

  8. python爬虫scrapy爬取新闻标题及链接_18Python爬虫---CrawlSpider自动爬取新浪新闻网页标题和链接...

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 scrapy startproj ...

  9. 19Python爬虫--爬取新浪新闻标题并保存到数据库

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 创建爬虫文件 scrapy st ...

最新文章

  1. javascript TODO
  2. 多线程 java 实例_Java多线程实例学习
  3. Skywalking部署常见问题以及注意事项
  4. LeetCode 2177. 找到和为给定整数的三个连续整数
  5. VS封装给Unity使用的DLL
  6. 2020年,哪些行业涨工资最多?
  7. 统赢编程软件_统赢PressCAD线割慢走丝编程软件的线割上下异形编程设定
  8. 职称计算机 frontpage 2003,职称计算机考试大纲:FrontPage2003网页设计与制作
  9. 浏览器通过域名查找IP地址的过程
  10. C++ OpenCV 将黑点框出来
  11. tomcat中运行PHP项目
  12. macOS、Shimo下载使用及路由配置
  13. 高性能两级缓存J2Cache
  14. spark ui job和stage的dag图查看过去运行的任务,查不到,分析源码解决问题
  15. ubuntu18.04上使用7z分卷压缩和解压
  16. (error) MOVED 原因和解决方案
  17. chrome拓展以及油猴脚本推荐
  18. IP核的使用之RAM(Vivado)
  19. OpenCV的下载、安装和配置
  20. 中国移动首测6G,确保中国在移动通信技术上的领先优势

热门文章

  1. 探索HTTP传输中gzip压缩的秘密
  2. 分布式事物框架Easy-Transaction--使用入门介绍
  3. MSTP:多生成树实例——应用案列及配置命令(实验)
  4. Billboard HDU - 2795(树状数组,单点修改,区间查询)
  5. git clone 指定分支
  6. 在微信小程序中引入 Iconfont 阿里巴巴图标库
  7. 【Java】求100以内的斐波那契数列
  8. mac应用开发入门笔记
  9. javascript_如何不再害怕JavaScript
  10. 二进制搜索树_数据结构101:二进制搜索树