python爬网易新闻_Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧

这篇博客介绍了如何使用Python爬虫抓取网易新闻的标题、作者、来源、发布时间和新闻正文。通过分析接口URL规律,利用requests和BeautifulSoup库实现数据获取和解析。文章还提及了异步采集以提高效率。
摘要由CSDN通过智能技术生成

Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧

发布时间:2020-02-21 17:42:43

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

stars声明很多小伙伴学习Python过程中会遇到各种烦恼问题解决不了。为此小编建了个群 624440745。

不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!

此文属于入门级级别的爬虫,老司机们就不用看了。

本次主要是爬取网易新闻,包括新闻标题、作者、来源、发布时间、新闻正文。

首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻。然后鼠标右键点击查看源代码,发现源代码中并没有页面正中的新闻列表。这说明此网页采用的是异步的方式。也就是通过api接口获取的数据。

那么确认了之后可以使用F12打开谷歌浏览器的控制台,点击Network,我们一直往下拉,发现右侧出现了:"… special/00804KVA/cm_guonei_03.js? … "之类的地址,点开Response发现正是我们要找的api接口。 在这里插入图片描述

可以看到这些接口的地址都有一定的规律:“cm_guonei_03.js”、 “cm_guonei_04.js”,那么就很明显了:

http://temp.163.com/special/0…*).js上面的连接也就是我们本次抓取所要请求的地址。

接下来只需要用到的python的两个库:

requests

json

BeautifulSoup

requests库就是用来进行网络请求的,说白了就是模拟浏览器来获取资源。

由于我们采集的是api接口,它的格式为json,所以要用到json库来解析。BeautifulSoup是用来解析html文档的,可以很方便的帮我们获取指定div的内容。

下面开始编写我们爬虫:

第一步先导入以上三个包:

import jsonimport requestsfrom bs4 import BeautifulSoup

接着我们定义一个获取指定页码内数据的方法:

复制代码1 def get_page(page):2 url_temp = ‘http://temp.163.com/special/00804KVA/cm_guonei_0{}.js’3 return_list = []4 for i in range(page):5 url = url_temp.format(i)6 response = requests.get(url)7 if response.status_code != 200:8 continue9 content = response.text # 获取响应正文10 _content = formatContent(content) # 格式化json字符串11 result = json.loads(_content)12 return_list.append(result)13 return return_list复制代码

这样子就得到每个页码对应的内容列表:

在这里插入图片描述

之后通过分析数据可知下图圈出来的则是需要抓取的标题、发布时间以及新闻内容页面。

在这里插入图片描述

既然现在已经获取到了内容页的url,那么接下来开始抓取新闻正文。

在抓取正文之前要先分析一下正文的html页面,找到正文、作者、来源在html文档中的位置。

我们看到文章来源在文档中的位置为:id = “ne_article_source” 的 a 标签。 作者位置为:class = “ep-editor” 的 span 标签。 正文位置为:class = “post_text” 的 div 标签。

下面试采集这三个内容的代码:

复制代码1 def get_content(url):2 source = ‘’3 author = ‘’4 body = ‘’5 resp = requests.get(url)6 if resp.status_code == 200:7 body = resp.text8 bs4 = BeautifulSoup(body)9 source = bs4.find(‘a’, id=‘ne_article_source’).get_text()10 author = bs4.find(‘span’, class_=‘ep-editor’).get_text()11 body = bs4.find(‘div’, class_=‘post_text’).get_text()12 return source, author, body复制代码到此为止我们所要抓取的所有数据都已经采集了。

那么接下来当然是把它们保存下来,为了方便我直接采取文本的形式来保存。下面是最终的结果:

在这里插入图片描述

格式为json字符串,“标题” : [ ‘日期’, ‘url’, ‘来源’, ‘作者’, ‘正文’ ]。

要注意的是目前实现的方式是完全同步的,线性的方式,存在的问题就是采集会非常慢。主要延迟是在网络IO上,可以升级为异步IO,异步采集。

需要代码的同学可以添加群624440745

不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!

本文链接:https://www.ynicp.com/news/content/2240.html

复制本文链接

链接已复制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值