专栏名称: 王树义
终身学习者、大学教师。稍微懂一点儿写作、演讲、Python和机器学习。欢迎微信关注并置顶我的公众号“玉树芝兰”(nkwangshuyi)。我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动。
目录
相关文章推荐
百职帮  ·  这个暑假学Python,开学直接惊艳所有人!! ·  5 小时前  
百职帮  ·  这个暑假学Python,开学直接惊艳所有人!! ·  5 小时前  
Python开发者  ·  今年IT就业市场的风向已经很明显了。。。 ·  17 小时前  
Python爱好者社区  ·  跌爆了。。。 ·  昨天  
Python爱好者社区  ·  挑行李回家的高考女生火了!热心网友愿资助,多 ... ·  2 天前  
Python爱好者社区  ·  全球第二大成人网站,正在被打包出售。。。 ·  3 天前  
51好读  ›  专栏  ›  王树义

如何用Python爬数据?(一)网页抓取

王树义  · 简书  · Python  · 2018-03-03 21:56

正文

请到「今天看啥」查看全文


这篇文章里,我把之前的发布的数据科学系列文章做了重新组织和串讲。

文中包含很多之前教程的标题和对应链接。例如下图红色边框圈起来的部分。

假设你对文中提到教程都很感兴趣,希望获得这些文章的链接,并且存储到Excel里,就像下面这个样子:

你需要把非结构化的分散信息(自然语言文本中的链接),专门提取整理,并且存储下来。

该怎么办呢?

即便不会编程,你也可以全文通读,逐个去找这些文章链接,手动把文章标题、链接都分别拷贝下来,存到Excel表里面。

但是,这种手工采集方法 没有效率

我们用Python。

环境

要装Python,比较省事的办法是安装Anaconda套装。

请到 这个网址 下载Anaconda的最新版本。

请选择左侧的 Python 3.6 版本下载安装。

如果你需要具体的步骤指导,或者想知道Windows平台如何安装并运行Anaconda命令,请参考我为你准备的 视频教程

安装好Anaconda之后,请到 这个网址 下载本教程配套的压缩包。

下载后解压,你会在生成的目录(下称“演示目录”)里面看到以下三个文件。

打开终端,用cd命令进入该 演示目录 。如果你不了解具体使用方法,也可以参考 视频教程

我们需要安装一些环境依赖包。

首先执行:

pip install pipenv

这里安装的,是一个优秀的 Python 软件包管理工具 pipenv 。

安装后,请执行:

pipenv install

看到演示目录下两个Pipfile开头的文件了吗?它们就是 pipenv 的设置文档。

pipenv 工具会依照它们,自动为我们安装所需要的全部依赖软件包。

上图里面有个绿色的进度条,提示所需安装软件数量和实际进度。

装好后,根据提示我们执行:

pipenv shell

此处请确认你的电脑上已经安装了 Google Chrome 浏览器。

我们执行:

jupyter notebook

默认浏览器(Google Chrome)会开启,并启动 Jupyter 笔记本界面:

你可以直接点击文件列表中的第一项ipynb文件,可以看到本教程的全部示例代码。

你可以一边看教程的讲解,一边依次执行这些代码。

但是,我 建议 的方法,是回到主界面下,新建一个新的空白 Python 3 笔记本。

请跟着教程,一个个字符输入相应的内容。这可以帮助你更为深刻地理解代码的含义,更高效地把技能内化。

准备工作结束,下面我们开始正式输入代码。

代码

读入网页加以解析抓取,需要用到的软件包是 requests_html 。我们此处并不需要这个软件包的全部功能,只读入其中的 HTMLSession 就可以。

from requests_html import HTMLSession

然后,我们建立一个会话(session),即让Python作为一个客户端,和远端服务器交谈。

session = HTMLSession()

前面说了,我们打算采集信息的网页,是《 如何用《玉树芝兰》入门数据科学? 》一文。

我们找到它的网址,存储到url变量名中。

url = 'https://www.jianshu.com/p/85f4624485b9'

下面的语句,利用 session 的 get 功能,把这个链接对应的网页整个儿取回来。

r = session.get(url)

网页里面都有什么内容呢?

我们告诉Python,请把服务器传回来的内容当作HTML文件类型处理。我不想要看HTML里面那些乱七八糟的格式描述符,只看文字部分。

于是我们执行:

print(r.html.text)

这就是获得的结果了:







请到「今天看啥」查看全文