这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在日后必定价值15K月薪 。
文章插图
这次是要爬取网易新闻,包括新闻标题、作者、来源、发布时间、正文等 。
第一步,我们先找到网易新闻的网站,并且打开,选择其中的某一个分类,比如:国内新闻,然后点击鼠标的右键查看源代码 。
如果你遇到了以下这种情况:
在源代码中并没有页面正中的新闻列表 。这说明此网页采用的是异步的方式 。也就是通过api接口获取的数据 。
在确认之后,用F12打开谷歌浏览器的控制台,点击 Network,我们一直往下拉,发现右侧出现了:"… special/00804KVA/cm_guonei_03.js? … "之类的地址,点开Response发现正是我们要找的api接口 。
可以看到这些接口的地址都有一定的规律:“cm_guonei_03.js”、“cm_guonei_04.js”,那么就很明显了:
http://temp.163.com/special/00804KVA/cm_guonei_0(*).js
上面的链接也就是我们本次抓取所要请求的地址 。
接下来只需要用到的python的两个库:
requestsjsonBeautifulSoup
requests库就是用来进行网络请求的,说白了就是模拟浏览器来获取资源 。由于我们采集的是api接口,它的格式为json,所以要用到json库来解析 。BeautifulSoup是用来解析html文档的,可以很方便的帮我们获取指定div的内容 。
下面我们正式进入爬虫程序的编写
第一步先导入以上三个包:
文章插图
接着我们定义一个获取指定页码内数据的方法:
文章插图
这样子就得到每个页码对应的内容列表:
文章插图
之后通过分析数据可知下图圈出来的则是需要抓取的标题、发布时间以及新闻内容页面 。
既然现在已经获取到了内容页的url,那么接下来开始抓取新闻正文 。
在抓取正文之前要先分析一下正文的html页面,找到正文、作者、来源在html文档中的位置 。
我们看到文章来源在文档中的位置为:id = “ne_article_source” 的 a 标签 。作者位置为:class = “ep-editor” 的 span 标签 。正文位置为:class = “post_text” 的 div 标签 。
下面采集这三个内容的代码:
文章插图
到此为止我们所要抓取的所有数据都已经采集了 。
【最简单的Python爬虫案例,看得懂说明你已入门】那么接下来当然是把它们保存下来,为了方便我直接采取文本的形式来保存 。下面是最终的结果:
文章插图
格式为json字符串,“标题” : [ ‘日期’, ‘url’, ‘来源’, ‘作者’, ‘正文’ ] 。
要注意的是目前实现的方式是完全同步的,线性的方式,存在的问题就是采集会非常慢 。主要延迟是在网络IO上,下次可以升级为异步IO,异步采集,有兴趣的可以关注下次的文章 。
通过本次练手,各位应该会对爬虫有一个入门级的了解 。
推荐阅读
- 什么是JVM?
- Python 学习指南
- CentOS SSH 无密码登录的配置
- 丐帮武功有哪些 明教是不是倚天屠龙记里最强的门派
- 美国最高的山是哪座山 欧洲最高的山是什么山
- 智能摄像头进入家庭 个人的隐私该如何保护?
- 5种防御DDoS攻击的技术
- 一般分布式锁实现的套路
- 梦见水缸里的水很浑浊 梦到缸里有干净的水
- MYSQL关于find_in_set函数的使用详解和like的区别之处