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 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:continuecontent = 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.textbs4 = 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爬虫案例:抓取网易新闻相关推荐
- Scrapy爬虫框架抓取网易新闻
@scrapy 环境安装 Windows scrapy的安装需要5个依赖库,先安装好这5个依赖库,然后在dos命令中利用pip install安装scrapy框架即可,首先要确保python的目录是添 ...
- python爬虫(抓取百度新闻列表)
一.python请求要抓取的url页面 要抓取的url http://news.baidu.com/ ,先python模拟请求该url #!/usr/bin/python # -*- coding:u ...
- 新闻采集系统python_抓取网易新闻的python代码示例
这篇文章主要介绍了Python正则抓取网易新闻的方法,结合实例形式较为详细的分析了Python使用正则进行网易新闻抓取操作的相关实现技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python正则 ...
- python 爬虫 数据抓取的三种方式
python 爬虫 数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...
- 04-python简单爬虫_爬取网易新闻
# -*- coding: utf-8 -*- import os import sys import requests import re from lxml import etree"& ...
- python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?
原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...
- python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...
利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...
- Python爬虫实战---抓取图书馆借阅信息
Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...
- python抓取视频违法吗,科学网—【python爬虫】抓取B站视频相关信息(一) - 管金昱的博文...
昨天我在B站上写了这么一篇文章,但是被他们锁住了.无奈之下我复制到知乎上先保存起来 在这篇名为<三天学会用python进行简单地爬取B站网页视频数据>文章中我主要提到了两点在已知aid的情 ...
- Python爬虫采集抓取:Python3.x+Fiddler 采集抓取 APP 数据
随着移动互联网的市场份额逐步扩大,手机 APP 已经占据我们的生活,以往的数据分析都借助于爬虫采集爬取网页数据进行分析,但是新兴的产品有的只有 APP,并没有网页端这对于想要提取数据的我们就遇到了些问 ...
最新文章
- SpringCloud Alibaba微服务实战(二) - Nacos服务注册与restTemplate消费
- 用于语义分割的特征共享协作网络
- vue $emit $on 非父子非兄弟组件传值
- 《Effective Java》第8章 通用程序设计
- 1080 两个数的平方和(数学)
- redis-4.0.10集群安装(3台机器,6个node),以及在Spring项目中的集成,redis操作工具类
- 利用 Docker 搭建单机的 Cloudera CDH 以及使用实践
- MySQL数据库 --基础
- anroid抓包工具tcpdump的用法
- go兼容java_兼容dubbo的微服务框架dubbogo;dubbo的完整go语言实现
- ubuntu常用软件安装集合:360浏览器、QQ--持续更新
- 动手实现MVC: 4. AOP的设计与实现
- Atitit it系列书籍列表 C:\Users\Administrator\Documents\it 软件系列书籍\itlist.txt C:\Users\Administrator\Docume
- 话说软件详细设计工具
- Spark 关于提交任务报错 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources;
- 水晶报表--完美excel(上)
- mplfinance 一个堪称完美python量化金融可视化工具详析
- 希尔排序(c语言实现)
- 手机端web/app界面设计尺寸规范
- 我知道你不想跳槽,但你不该拒绝面试机会
热门文章
- 楷书书法规则_楷书的结构法则
- 课件动画做的牛不牛,看你有它没它!
- 怎么使excel表只显示一部分分页内容
- 安卓开发用什么语言好!这是一份用心整理的Android面试总结,已拿offer入职
- java 护眼背景,设置Eclipse配色方案--设置不同背景色,有效护眼
- 曾因“贿赂”苹果被罚款 10.3 亿美元,高通上诉成功
- 3D真人手办,做一个迷你版的自己
- 糟糕!我的服务器CPU被黑客挖矿了
- Python 读取文件夹下的Excel文件导入到数据库
- golang:%v,%+v,%#v的区别