分享

本文送给希望用python写出爬虫程序的零基础小伙伴

 DerekW99 2017-10-12

经完全零基础的人亲身测试,好使,连安装程序在内,只需5步!

前言

 三点


一、什么是爬虫?

粗俗点说,只要你肉眼在网页上看的见的数据,就能同步到你自己的本机或数据库(或excel)。这就叫爬虫。那什么是看的见的数据呢?比如你网页访问韭菜说的微博,里面的文章啊、标题啊、发表时间啊等等,这些都叫数据。这些数据会以某种形式存在某个地方。而这些数据的汇总下来,就是爬虫的本质。


二、为啥是Python?

python既简单好用,又时髦,做量化的都在用,你就用就好了,可以先不管那么多。以后用多了,就会感受到它的强大。


三、为啥做这个教程?

之前我们用python的爬虫程序写了两篇文章,反响很好,分别是:

(1)关上新闻联播,听听民间谈论中国经济的真实细节

(2)茅台酒喝者不买,买者不喝?基于京东评论的爬虫分析


很多朋友问怎么做到的,能否写个教程,甚至有十几位向我们重金打赏。这个东西本来也不难,我想干脆做出来分享给大家吧,就以爬去茅台酒在京东上的评论为例,只需要5步,你就可以知其然,并知其所以然!

也请大家分享给更多的大家!

(当然,赏金我们都退回去了,有几位联系不到请在后台速与我们的小编联系,见寻人启事


分享本文至朋友圈或微信群,截图发送给公众号后台,即可获取源代码及我们对程序的逐行详细解读。


第一步

 下载安装运行环境



任何一种语言,总得有一个交互环境吧(编写和运行程序的地方)。 

 

你可以直接去python的官网下载:www.python.org。不管是哪个版本,下载这个 executable installer即可。(先别着急下载,往下看)

然后在搜索windows“程序和软件”的地方输入“python”就会蹦出来python的交互环境,我去,回到中世纪的感觉,这就是传说中的python shell.(翻译:python的壳), 比python shell性能更好的交换环境有一个叫Ipython,可以在python官网上下载,但一样是乌漆麻黑的交互环境,小白肯定不喜欢。

这种原始的界面看起来都太让人头大了。更重要的是,在python的使用过程中,我们要用到很多和金融计算有关的模块(比如画个图,做个回归分析啥的),每一个模块都需要再安装,太麻烦了。 于是干脆直接请出Anaconda,这是python的一个科学计算环境,它不仅把python需要用到的科学计算数据分析的“模块包”包含在内,还直接内嵌安装了python和Ipython。也就是说,你安装了它,就不需要在单独安装python和相关模块了。 

Anaconda的下载地址为:https://www./downloads#windows

首先你要右击“我的电脑”-“属性”查看一下你的系统是多少位的,再选择安装,建议直接上3.6版本。 更牛的是,它还自带安装了非常友好的python开发环境,Spyder。他可以让我们摆脱原始大黑屏,清晰而舒畅的进行代码的编辑和测试。这个页面和我之前用过的matlab非常像,所以一上手就感到很友好。大致功能分区如图:

这个页面的左边是负责程序编写。执行程序直接点击绿色小三角就可以了。右上方会对程序中产生的各种变量、数组等要素进行罗列。 右下方则显示程序的执行结果。执行前你可以选择python console 或者IPython console来运行程序,差异不是很大,我一般选择IPython(它的运行结果会直接在屏幕中显示,不会单独跳出窗口)。你也可以在这里直接写代码,进行简单的编写和测试修改。History log 里面则会显示你在这里输入的每一个命令记录,反复修改时多用来复制粘贴代码。

 

所以我现在编写python程序,直接打开spyder就可以了。 

 


先写一个简单的小程序测试一下spyder怎么用。 比如股票华夏幸福(sh600340)某天的价格信息为:开盘价38.60,最高价39.87,最低价37.70,收盘价38.43。 我们可以在程序编辑页面这么写:

复制代码:

“import numpy as np 

sh600340=np.array([38.60,39.87,37.70,38.43]) 

print(sh600340)”

这个程序的意思是用numpy模块创建一个数组叫做sh600340,用它来存储华夏幸福的价格信息。这里你先不必深究每句话的意思。

 写完以后点击绿色小三角按钮执行,会提示你保存这个py文件。

你找个位置存一下。然后程序就会执行,结果如下:


第一步完成以后,你已经能够用spyder执行一个python程序,并能够清晰看到执行的结果。下面就可以进行第二步啦!

广告位:本站推出投资趣图发送专用账号,欢迎关注

第二步

 执行京东茅台评论爬虫程序


亲,现在可以把这个程序复制到你的spyder当中。


分享本文至朋友圈或微信群,截图发送给公众号后台,即可获取源代码及我们对程序的逐行详细解读。


点击执行!见证奇迹的时刻!下图是程序执行的过程:

执行完毕以后,在你存放py程序的文件夹里,会出现一个excel文件如图:

这个文件就是存储爬虫结果的地方。点击打开看看有什么惊喜:

你可以看到。所有的信息都已经放在这个excel文件里面啦。

到了这一步。你已经可以自己动手获得京东上关于茅台这个商品的评论数据了!

不过,你可能会问,如果我想看别的商品怎么办?我想看天猫的数据怎么办?我想看随便一个网页的某个数据怎么办?

没错,上面这部分只是授人以鱼,下面这部分我们就开始授人以渔,绝对核心干货。


第三步

 举一反三的几个关键点



程序里面有几个地方是可变的,分别是:

(1)程序中我向excel表格中写入的表头的列名哪里来的?我从数据源中读取哪些数据向这些列中区填充?你会发现,二者其实是一致的。

(2)我的数据来源是从哪里获取的?就是下面的这个url连接。

整个逻辑就是,

1.我从这个URL链接中,找到了我想要进行爬虫的信息;

2.通过解析其内容发现,其中有content,uerclientShow等一系列信息是我想要的,于是我就创建了一个excel,把它的表头(也就是0行0列开始),输入为content,uerclientShow等一系列名称;(对应代码28-38行)

3.然后我定义了一个函数,这个函数可以把连接中解析出来的所有content,uerclientShow等相关内容,按照对应关系,写入到excel的相应位置(45-58行)

4.最后我以循环的方式执行了这个函数,针对一页评论都执行了一边。

那么最核心的问题就变成:如何找到这个链接,并且解析出这些信息?


第四步

 找到某个网页的解析地址并替换商品


这里教大家 如何分析京东评论链接,因为咱们的所有评论都是基于这个链接地址爬出来的哦!其实呢对于非程序员来讲,这段讲解 对你们来说有些难了,但没办法。不讲清楚,这个程序你就没法做到举一反三,我就有骗钱的嫌疑。

首先:打开京东一个商品链接 例如:https://item.jd.com/251837.html

其次 看F12 打开浏览器 调试工具。这个工具每个浏览器都不一样,建议用谷歌浏览器,因为这个浏览器比较友好。

于是呢!你会发现,哇。。。什么玩意!

接下来 跟我来

第一步

先点击这两个:network,js

第二步

在点击这个:商品评论,也就是你想看的页面

一看都是链接。这个其实是HTTP 请求协议,里面请求了好多。因为京东评论是用异步做的,所以只有在这里面才可以看到。

随便点击一个  右面要点击 response 看里面的JSON 值,

其实这里面我们可以这样分析 你想啊, 你现在找的是什么啊。是不是评论啊。那评论英文单词是什么呀。是不是comment啊那你就看这些链接 哪些是comment

咦  猛然 你就会发现 这有一个链接:productcommentXXX,点开里面的response查看,果然,里面就是所有评论的内容的相关信息!

意不意外!!!惊不惊喜!!! 。没错 我们程序中的的链接就是这么来的!

如果你想换一个商品,没有问题!这个链接里面有一个productid,可以替换的嘛。

https://club.jd.com/comment/productPageComments.action?productId=251837&score=0&sortType=5&page=1&pageSize=100&isShadowSku=0&fold=1(注意:程序中最后'fold='这个地方用i代替了数字,做了一个循环,fold=1代表第一页,=2代表第二页)


这个id和直观看上去的网页链接是一样的。

那我们把其他商品的id换过来就可以了。

比如:东阿阿胶。

我们把程序中的id代码更换一下,就可以爬出东阿阿胶的相关评论了。

结果如下:


第五步

 如何从地址中解析中自己想要的信息


你一定会问,程序中的表头那些标签信息是怎么来的?这些都是从地址中解析出来的。

你把京东茅台评论的解析地址放到网页上打开看一下:

https://club.jd.com/comment/productPageComments.action?productId=251837&score=0&sortType=5&page=1&pageSize=100&isShadowSku=0&fold=1

这里面包含了第一页评论中的所有信息,甚至包括图片。但是,完全没有格式啊。到底哪些才是我们要的信息呢?

像这种这么乱的JSON ,你让我看我也找参数很费劲的,幸亏有很多巨人已经意识到这些问题了 并开发一些工具例如以下这个链接:

http://www./

复制上面的JSON到这个文本框 点击校验。你就会发现JSON 被格式化了。。。没错就是这么神奇 ,然后就是考验各位英语了。。。其实不会英语也没关系,你就看需要什么信息,就把前面的字段复制过去就行了。

仔细观察你会发现,每一个评论及其相关信息,都会存在一个数组中。

你可以看看这里头有哪些信息是你想要的,找出来。

所以我们在程序中的28-45行的表头信息,就是从这里找来的。你自己也可以尝试更改,留下自己想要的东西。



结语

 随便叨叨



如果你认真看了这个程序,并且照着做了一遍,你现在已经可以从京东这个网站上爬取任何一个商品的数据了。下一步,你可以依葫芦画瓢,向天猫,微博,知乎,股吧,天天基金网等等各种你感兴趣的网站进军。基本大同小异。

其他各位试验成功的消息。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多