Python爬虫实战系列1:博客园cnblogs热门新闻采集

Python魔法师 / 2024-03-13 / 原文

实战案例:博客园热门新闻采集

一、分析页面

今日新闻.png

本次采集,我们以页面新闻标题为案例来采集。这里可以看到标题“ 李彦宏:以后不会存在“程序员”这种职业了”。

1.1、分析请求

F12打开开发者模式,然后点击Network后点击任意一个请求,Ctrl+F开启搜索,输入标题李彦宏:以后不会存在“程序员”这种职业了 ,开始搜索

请求分析.png

可以看到请求地址为 但是返回的内容不是json格式,而是html源码,说明该页面是博客园后端拼接html源码返回给前端的,这里我们就不能简单的直接通过API接口来获取数据了,还需要对html源码进行解析。

1.2、分析页面

点击查看元素,然后点击新闻标题。

页面源码.png

对应的html源码是<a href="/n/766062/" target="_blank">李彦宏:以后不会存在“程序员”这种职业了</a>

通过源码我们可以看出,标题是被一个id=news_list的div包裹,然后news_div下还有news_block这个div包裹,然后是逐级向下,一直到a标签才是我们想要的数据。

标题源码分析.png

1.3、分页信息处理

分页信息.png

通过页面分析,可以看到分页很简单,直接在Query String QueryParamters里传入type: week、page: 2两个参数即可。

1.4、判断反爬及cookie

如何判断该请求需要哪些header和cookie参数?或者有没有反爬策略

copy_curl.png

首先拷贝curl,在另一台机器上运行,curl代码如下

curl代码.png

通过逐步删除代码中header参数来判断哪些是必要的参数,首先把cookie参数删除试试,发现可以获取到结果。由此判断,该网站没有设置cookie请求机制。

那就很简单了,直接发请求,解析html源码。

二、代码实现


新建获取新闻get_news函数


代码主要使用了requests和lxml两个库来实现

测试运行


程序运行效果.png

完整代码


总结

通过以上代码,我们实现了采集博客园的功能。

本文章代码只做学习交流使用,作者不负责任何由此引起的法律责任。

各位看官,如对你有帮助欢迎点赞,收藏,转发,关注公众号【Python魔法师】获取更多Python魔法~

qrcode.jpg