腾讯新闻、新浪新闻的详细采集过程

  • 一、腾讯新闻采集
    • 1.按分类采集腾讯新闻列表
      • 分析过程:
      • 具体代码:
    • 2.采集腾讯新闻内容
      • 分析过程
      • 具体代码
  • 二、新浪新闻采集分析

一、腾讯新闻采集

1.按分类采集腾讯新闻列表

分析过程:

  1. 采集的网页地址:https://xw.qq.com/?f=c_news

    2.先进入一个分类(娱乐)来分析数据如何传输的

    1. 通过在娱乐分类页面里,向下滑动新闻加载更多数据,同时 利用chrome的Network可以发现有一个加载下一页的url接口: https://pacaio.match.qq.com/xw/site?ext=ent&channel=ent&webview=wechat&qudao=default&network=WIFI&num=20&page=1
    2. 通过分析,上面这个接口就是获取新闻列表的数据接口。下一步我们将要模拟请求 去爬取这个url接口数据。 而且我们发现只需要修改请求url里的page的参数就可以得到新闻第几页数据了。这就更方便我们去遍历获取新闻数据了。

      5.接下来,我们就可以写代码去请求接口并解析返回的json数据了

具体代码:

```javapublic static void main(String[] args) {//循环10次  采集10页for (int i = 1; i < 10; i++) {String url="https://pacaio.match.qq.com/xw/site?ext=ent&channel=ent&webview=wechat&qudao=default&network=WIFI&num=20&page="+i+"&_t=1625219273";String s = get(url);JSONObject jsonObject = JSONObject.parseObject(s);JSONArray jsonArray = jsonObject.getJSONArray("data");if (jsonArray.isEmpty())continue;for (Object o : jsonArray) {JSONObject jsonObject1 = JSONObject.parseObject(String.valueOf(o));//新闻idString sourceid = jsonObject1.getString("app_id");//作者String source = jsonObject1.getString("source");//标题String topic = jsonObject1.getString("title");//新闻详细内容的地址String sourceurl = jsonObject1.getString("url");//新闻的创建时间String datetime = jsonObject1.getString("update_time");//新闻的评论数int like_count = jsonObject1.getInteger("comment_num");//新闻的缩略图JSONArray jsonArray1 = jsonObject1.getJSONArray("multi_imgs");System.out.println(topic);System.out.println(sourceurl);}}}//get请求的工具方法private static String get(String url) {String result = "";BufferedReader in = null;try {URL realUrl = new URL(url);URLConnection connection = realUrl.openConnection(); // 打开和URL之间的连接// 设置通用的请求属性connection.setRequestProperty("Accept-Charset", "UTF-8");connection.setRequestProperty("content-type", "text/html; charset=utf-8");connection.setRequestProperty("accept", "*/*");//connection.setRequestProperty("Cookie", "tt_webid=20 B, session, HttpOnly www.toutiao.com/");connection.setRequestProperty("Cookie", "utm_source=vivoliulanqi; webpSupport=%7B%22lossy%22%3Atrue%2C%22animation%22%3Atrue%2C%22alpha%22%3Atrue%7D; tt_webid=6977609332415530509; ttcid=1b2305f8baa44c8f929093024ae40dbf62; csrftoken=f8363c5a04097f7fd5d2ee36cf5bbd40; s_v_web_id=verify_kqbxnll7_QA9Z6n7G_LFul_4hTP_9jZf_zgZYUK3ySQOT; _ga=GA1.2.2038365076.1624601292; _gid=GA1.2.2124270427.1624601292; MONITOR_WEB_ID=518b84ad-98d5-4cb4-9e4e-4e3c3ec3ffe2; tt_webid=6977609332415530509; __ac_nonce=060d5aa4200b3672b2734; __ac_signature=_02B4Z6wo00f010CALQgAAIDA8HHBwRR4FntApCmAALEAeRZEDep7WW-RzEt50sUvtrkCpbRJMhboWeZNJ2s66iti2ZD-7sSiClTqpKs6b7ppQUp1vD8JHANxzSZ1srY4FF1y1iQitM1bQvYIf3; ttwid=1%7CTBE591UU7daDw3rsqkr6wXM1DqlOA3iyjUnPK-W6ThQ%7C1624615515%7Ccb0f077482096b50d19757a23f71240547d6b0c767bf9ab90fa583d022f47745; tt_scid=af-M9Xg-rmZAnPsCXhZu.2.DfKZe95AyPKJFzU0cL1KarDLfV3JYeIf.G28mIwhI57a0");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36");connection.connect(); // 建立实际的连接Map<String, List<String>> map = connection.getHeaderFields(); // 获取所有响应头字段in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}
```

2.采集腾讯新闻内容

分析过程

  1. 上面我们已经采集到了列表数据,拿到了 新闻内容地址:
  2. 打开新闻链接内容,分析如何获取内容。https://xw.qq.com/cmsid/20210630A09TUE00

    3.打开新闻页面后,在chrome的浏览器 按住 Ctrl+U 查看内容的资源文件:

    4.复制出资源文件里的html内容,美化成好看的格式后。分析如何拿到新闻 的文本和图片。

    5.分析后, html里有一个js变量(json_content)里,有我们要用的数据。

具体代码

 //采集腾讯内容public static void main(String[] args) {String s = get("https://xw.qq.com/cmsid/20210630A09TUE00");String[] split = s.split("json_content\":");if (split.length<=1){return;}String[] split1 = split[1].split("]");JSONArray array = JSONObject.parseArray(split1[0] + "]");StringBuilder contentBuffer = new StringBuilder(); //得到主体内容for (Object o : array) {JSONObject jsonObject = JSONObject.parseObject(String.valueOf(o));String value = jsonObject.getString("value");Integer type = jsonObject.getInteger("type");if (type==1){contentBuffer.append("<p>" + value + "</p>");System.out.println("文本:"+value);}else if(type==2){System.out.println("图片:"+value);contentBuffer.append("<img src=\"" + value + "\">");}}//整理后的内容System.out.println(contentBuffer);}//get请求的工具方法private static String get(String url) {String result = "";BufferedReader in = null;try {URL realUrl = new URL(url);URLConnection connection = realUrl.openConnection(); // 打开和URL之间的连接// 设置通用的请求属性connection.setRequestProperty("Accept-Charset", "UTF-8");connection.setRequestProperty("content-type", "text/html; charset=utf-8");connection.setRequestProperty("accept", "*/*");//connection.setRequestProperty("Cookie", "tt_webid=20 B, session, HttpOnly www.toutiao.com/");connection.setRequestProperty("Cookie", "utm_source=vivoliulanqi; webpSupport=%7B%22lossy%22%3Atrue%2C%22animation%22%3Atrue%2C%22alpha%22%3Atrue%7D; tt_webid=6977609332415530509; ttcid=1b2305f8baa44c8f929093024ae40dbf62; csrftoken=f8363c5a04097f7fd5d2ee36cf5bbd40; s_v_web_id=verify_kqbxnll7_QA9Z6n7G_LFul_4hTP_9jZf_zgZYUK3ySQOT; _ga=GA1.2.2038365076.1624601292; _gid=GA1.2.2124270427.1624601292; MONITOR_WEB_ID=518b84ad-98d5-4cb4-9e4e-4e3c3ec3ffe2; tt_webid=6977609332415530509; __ac_nonce=060d5aa4200b3672b2734; __ac_signature=_02B4Z6wo00f010CALQgAAIDA8HHBwRR4FntApCmAALEAeRZEDep7WW-RzEt50sUvtrkCpbRJMhboWeZNJ2s66iti2ZD-7sSiClTqpKs6b7ppQUp1vD8JHANxzSZ1srY4FF1y1iQitM1bQvYIf3; ttwid=1%7CTBE591UU7daDw3rsqkr6wXM1DqlOA3iyjUnPK-W6ThQ%7C1624615515%7Ccb0f077482096b50d19757a23f71240547d6b0c767bf9ab90fa583d022f47745; tt_scid=af-M9Xg-rmZAnPsCXhZu.2.DfKZe95AyPKJFzU0cL1KarDLfV3JYeIf.G28mIwhI57a0");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36");connection.connect(); // 建立实际的连接Map<String, List<String>> map = connection.getHeaderFields(); // 获取所有响应头字段in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}

执行后:

二、新浪新闻采集分析

爬虫篇——新浪新闻的详细采集过程(列表新闻和新闻内容)

爬虫篇——腾讯新闻的详细采集过程(列表新闻和新闻内容)相关推荐

  1. 爬虫篇——新浪新闻的详细采集过程(列表新闻和新闻内容)

    腾讯新闻.新浪新闻的详细采集过程 一.新浪新闻采集 1.按分类采集新浪的列表新闻 分析过程: 代码编写: 执行效果: 2.采集新浪新闻内容 分析过程 代码编写: 执行效果: 二.腾讯新闻采集 一.新浪 ...

  2. 数据采集——爬虫篇(一):豆瓣电影TOP250详细信息采集

    数据采集--爬虫篇(一):豆瓣电影TOP250详细信息采集 . 1.分析豆瓣url换页变化 打开 https://movie.douban.com/top250?start=0&filter= ...

  3. python怎么爬取b站_【Python爬虫实例学习篇】——4、超详细爬取bilibili视频

    [Python爬虫实例学习篇]--4.超详细爬取bilibili视频 由于经常在B站上学习,但无奈于家里网络太差,在线观看卡顿严重,于是萌生了下载视频的想法(如果只是单纯想下载视频,请用you-get ...

  4. 第二篇|腾讯开源项目盘点:ncnn、xLua、libco等

    开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来. 腾讯开源了个 ...

  5. 自学python推荐书籍 知乎-在知乎上学 Python - 爬虫篇

    知乎是个好地方.虽然近年来,为了吸引更多的用户,知乎的定位与早期略有点偏离.但从内容质量和专业性来说,知乎仍然是国内数一数二的知识型社区.不少同学都是通过知乎发现了我们编程教室,我自己也经常会通过知乎 ...

  6. 1000行代码入门python-在知乎上学 Python - 爬虫篇

    知乎是个好地方.虽然近年来,为了吸引更多的用户,知乎的定位与早期略有点偏离.但从内容质量和专业性来说,知乎仍然是国内数一数二的知识型社区.不少同学都是通过知乎发现了我们编程教室,我自己也经常会通过知乎 ...

  7. python爬取百度新闻_火车浏览器网络爬虫实践6:以“陕茶”为例爬取百度新闻搜索结果...

    每天进步一点点,这是我2019年的小目标. 这是第6次学习与实践笔记了,这一次咱们把对象转移到百度搜索去,尝试使用火车浏览器爬虫工具来采集百度新闻搜索的结果,并做简单数据可视化展示. 01 抓取需求 ...

  8. 【python】爬虫篇:python对于html页面的解析(二)

    我,菜鸡,有什么错误,还望大家批评指出!! 前言: 根据自己写的上一篇文章,我继续更第二部分的内容,详情请点击如下链接 [python]爬虫篇:python连接postgresql(一):https: ...

  9. python读取fiddler_大数据采集之python的docker爬虫技术-fiddler抓包软件详细配置(7)...

    本篇文章探讨了大数据采集之python的docker爬虫技术-fiddler抓包软件详细配置(7),希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 挑选常用的功能给各位老铁介绍下 ...

最新文章

  1. 1035等差数列末项计算
  2. 【100题】 第四十七题 序列的最长递增、递减序列
  3. JobScheduler学习 附官方demo
  4. 举例详细说明javascript作用域、闭包原理以及性能问题(转)
  5. Redis操作hash类型
  6. mac linux netstat -n
  7. 最优化学习笔记(十八)——拟牛顿法(4)DFP算法
  8. 实验2.3 使用重载函数模板重新实现上小题中的函数Max1
  9. webpack打包优化_如何提升 Webpack 打包速度
  10. SQLServer实现将VARCHAR字符型对象转化为int/float数值型对象后排序、对VARCHAR对象截取指定部分再转化为数值对象进行排序
  11. 贪吃蛇游戏设计(一)————游戏策划
  12. 发卡机构(POS收单行)代码表
  13. 2022年数据分析与可视化10大案例总结
  14. 360浏览器显示服务器拒绝连接,360浏览器提示“您与此网站之间建立的连接不安全完美解决方法...
  15. 【立项建议书】苏科大校园app立项建议书
  16. java 笔触类_下列属于笔触类型的绘图工具有那些?
  17. Android沉浸式状态栏工具类,一句代码轻松搞定
  18. 简单操作用R Markdown生成HTML和PDF文件
  19. 软件工程生涯人物访谈报告
  20. 【课程设计|MFC】人民币大小写转换(含课程报告+源码)

热门文章

  1. EveryThing下载链接
  2. Flink教程(27)- Flink Metrics监控
  3. 第十六届全国大学生智能车竞赛线上总决赛比赛时间与直播链接
  4. 卵形曲线坐标计算方法
  5. ICMAX八大方法教你快速分清什么是SD卡与TF卡
  6. ROS人机交互界面开发
  7. projectwbs表_Microsoft Project 2010插入WBS编号的方法
  8. DXF笔记:线型CENTER的格式及绘制思想
  9. pycharm code with me 使用
  10. 水果(hdu1262)map