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

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

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

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

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

上面的连接也就是我们本次抓取所要请求的地址。

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

requests

json

BeautifulSoup

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

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

下面开始编写我们爬虫:

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

import json

import requests

from bs4 import BeautifulSoup

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

def get_page(page):

url_temp = 'http://temp.163.com/special/00804KVA/cm_guonei_0{}.js'

return_list = []

for i in range(page):

url = url_temp.format(i)

response = requests.get(url)

if response.status_code != 200:

continue

content = response.text # 获取响应正文

_content = formatContent(content) # 格式化json字符串

result = json.loads(_content)

return_list.append(result)

return return_list

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

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

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

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

我们看到文章来源在文档中的位置为:id = "ne_article_source" 的 a 标签。

作者位置为:class = "ep-editor" 的 span 标签。

正文位置为:class = "post_text" 的 div 标签。

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

def get_content(url):

source = ''

author = ''

body = ''

resp = requests.get(url)

if resp.status_code == 200:

body = resp.text

bs4 = BeautifulSoup(body)

source = bs4.find('a', id='ne_article_source').get_text()

author = bs4.find('span', class_='ep-editor').get_text()

body = bs4.find('div', class_='post_text').get_text()

return source, author, body

到此为止我们所要抓取的所有数据都已经采集了。

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

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

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

python爬取新闻网站内容_python爬虫案例:抓取网易新闻相关推荐

  1. python爬虫爬取网页图片_Python爬虫实现抓取网页图片

    在逛贴吧的时候看见贴吧里面漂亮的图片,或有漂亮妹纸的图片,是不是想保存下来? 但是有的网页的图片比较多,一个个保存下来比较麻烦. 最近在学Python,所以用Python来抓取网页内容还是比较方便的: ...

  2. python爬取新闻网站标题_python如何正确抓取网页标题

    有一个简单的错误.HTML文件不能用正则表达式parse,因为他的文法比正则表达式高级,具体原因参考这里. 推荐解析这种HTML用一些第三方库,例如mechanize 我的代码如下:import me ...

  3. python爬虫新闻内容_python爬虫:抓取新浪新闻内容(从当前时间到之前某个时间段),并用jieba分词,用于训练自己的分词模型...

    1 #-*- coding:utf-8 -*- 2 __author__ = 'Administrator' 3 4 importre5 from bs4 importBeautifulSoup6 i ...

  4. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  5. python爬网站数据实例-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  6. python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息

    Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...

  7. python爬取网店数据_Python爬虫实现抓取京东店铺信息及下载图片功能示例

    本文实例讲述了Python爬虫实现抓取京东店铺信息及下载图片功能.分享给大家供大家参考,具体如下: 这个是抓取信息的 from bs4 import BeautifulSoup import requ ...

  8. python爬虫代理服务器_Python爬虫多线程抓取代理服务器

    Python作为一门功能强大的脚本语言来说,经常被用来写爬虫程序,下面是Python爬虫多线程抓取代理服务器 首先通过谷歌把包含代理服务器地址的网页查出来,我选择从 http://www.88181. ...

  9. python爬虫ip代理_python爬虫批量抓取ip代理的方法(代码)

    本篇文章给大家带来的内容是关于python爬虫批量抓取ip代理的方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 使用爬虫抓取数据时,经常要用到多个ip代理,防止单个ip访 ...

最新文章

  1. zabbix工作流程(自定义添加监控项目)
  2. CentOS 7升级gcc 8.3.1 7.x.x 4.9.4版本
  3. mysql禁用历史命令_如何禁止mysql记录历史命令
  4. Opencv--CalcOpticalFlowPyrLK实现的光流法理解
  5. MedMNIST:上海交大发布医学影像领域的MNIST(附下载)
  6. WPF学习(3) – WPF控件
  7. Ubuntu Linux服务器安装图形化界面并用VNC Viewer连接
  8. linux如何调试脚本程序,调试Linux shell脚本的方法
  9. matlab给图片滤波,matlab每日学习 图片滤波
  10. 打造升级GsonFormat驼峰命名规则
  11. 计算机操作基础知识点总结
  12. net-java-php-python-教学资源管理系统hsg修改版计算机毕业设计程序
  13. 苹果登陆qq邮箱服务器,iPad和iPhone如何登陆QQ邮箱 怎么设置
  14. 岗位-iOS开发工程师-总结
  15. 中国首部房地产行业电子签名应用白皮书发布,法大大编写
  16. linux文件句柄上线的修改,修改Linux文件句柄限制
  17. 小福利,采用excel函数制作大屏可视化,用sumifs函数快速统计汇总数据,锁行锁列以及锁列不锁行
  18. VS 2013使用ReportViewer 提示An error occurred during local report processing异常处理
  19. 微软亚洲研究院的一道面试题
  20. 头歌:输入输出之计算圆周长与面积

热门文章

  1. 电大计算机网络网考,电大计算机网络(本)学习周期01任务A_0009答案
  2. 数据库杂谈(三)——关系代数
  3. 【 Grey Hack 】综合工具 shellOs
  4. Linux C/C++ UDP Socket 网络通信
  5. 解决表字段使用关键字导致Mybatis Generator生成代码异常的解决方案
  6. 记录uni-app弹框事件无生命周期问题;uni-popup-dialog打开触发事件;uni-popup-dialog调用接口时机
  7. React开发(255):react项目理解 ant design 注意报错提示
  8. [css] 头部设置meta也可以做到自适应为啥还要用rem?
  9. [css] 如何让一个块元素绝对居中?
  10. 前端学习(2694):重读vue电商网站15之阻止页签tabs切换