前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >033Python爬虫学习笔记-1从入门到爬取豆瓣书评影评

033Python爬虫学习笔记-1从入门到爬取豆瓣书评影评

作者头像
企鹅号小编
发布2018-02-01 14:36:45
1.7K0
发布2018-02-01 14:36:45
举报
文章被收录于专栏:编程

1.什么是爬虫

可以理解为抓取、解析、存储互联网上原始信息的程序工具,Google、Baidu底层都是爬虫。

2.为什么学Python和爬虫

从2013年毕业入职起,我已在咨询行业呆了4.5年,期间历经了从尽职调查、战略规划、业务转型,到信用风险管理、数据管理等多类项目,也经历了从Analyst到Consultant到Senior再到Manager的角色转变,收获良多。

然而时代在变,市场环境、金融行业、科技融合程度已今非昔比,自身发展需求与职业瓶颈的矛盾越来越突出。在当前的年纪,所有职业路径判断与选择的出发点都是类似的——去往能最大程度积累沉淀自己的地方。每个发展阶段都有黄金选择期,错过了就比较被动。

我意向的行业对数据分析有着相比咨询更高要求,咨询行业侧重于商业逻辑分析,本身的数据分析过程并不复杂。从我自己日常对银行业的数据分析过程看:

数据源:基本是Wind提取+年报研报补漏;

清洗:Excel PivotTable+VBA;

分析:Excel分析工具库(回归分析)+CrystallBall(敏感性分析);

展现:Excel Chart(精细化格式调整)+Think-Cell Chart(快速展现与复杂标记)。

工具的选择:

所以我自己日常的数据处理其实局限在Excel的筛选归类层面,这很好,但应对未来趋势变化,这还不够。在跟行业客户接触过程中,我也看到一些其他的数据分析方式:

某家银行的计划财务部取数还是在业务系统中运行SQL指令;

阿里风控团队也是通过SQL自己取数自己分析;

某行信用卡中心通过SAS取数建模;

我司精算团队用SAS做保险业链梯法计算;

我司风险团队用SAS做零售信贷评分卡建模;

我司RPA团队用BluePrism给各类公司繁复流程操作做机器人流程自动化……

上述这些工具中:

SAS比较复杂,与我的工作关联度较小,但我仍然认为努力获得一张SAS Base/Advanced Programmer证书作为简历上的基础名片蛮有意义。

R语言曾经在Coursera上学过几门课程,对RStudio圆萌的字体印象深刻,使用方便,但场景较少。

综合考虑,我认为未来自己意向发展的行业中,Python+SQL是两大简单强大、使用频率极高的工具。因为真正的商业分析,需要结合自己的取数思路去钻取,企业的一手数据量庞大到无法用一个excel文件去筛选归类,也不可能有一个码农小哥每天服务你,只能自学。

为了自学Python,我选择了相对有意思的切入点——爬虫。因为爬虫的应用场景实在太广了,工作上可以用来做市场分析、市场监控、商机发现,用于各类规划分析项目;生活中,也总能找到自己喜欢的场景,比如有人爬取知乎所有美女头像,有人通过浏览器抓包钻研银行活动。

3.实战——从爬取豆瓣书评影评做起

3.1部署环境(Python+PyCharm+Packages)

用途:Python是主程序,PyCharm是方便撰写代码的IDE(集成开发环境),Packages是撰写爬虫中需要调用的前人写好的各类包/组件

Python2.X和3.X版本选择:差别不大:主要是语法、编码、Print用法、Xrange等函数改变。语法是细枝末节的东西,与其纠结学习2还是3,不如马上开始。但Python3更简单,而且Python2只维护到2020年。

下载Python3.6:https://www.python.org/downloads/release/python-363/,在我的电脑属性中设置环境变量,方便cmd直接打开python

下载PyCharm Community:方便写代码(就像RStudio之于R一样)Http://www.jetbrains.com/pycharm/download/#section=windows,安装后需选择Project Intepreter(项目编译器)的目录是之前安装Python3.6的路径。

安装Packages(本次涉及的有requests, BeautifulSoup4, pandas,其它前置包会自动安装): 如果在命令行下安装(在CMD环境下,而不是Python环境下),用pip install requests命令(pip 是Python的软件包管理系统,Python语言自带的命令行工具,它可以安装和管理第三方软件包。

需注意PyCharm创建了一个Python虚拟机环境,所以Python安装目录下用pip命令安装的packages,在pycharm会提示找不到,解决方法是通过File-Settings-Project右侧的加号查找重新安装,非常方便。

pip安装packages的命令行界面

PyCharm安装packages的图形界面

3.2爬取豆瓣书评

爬虫结构:就像一只虫子的头-身-尾三部分一样,简单爬虫结构包括三部分:1使用requests获得数据+2使用BeautifulSoup解析数据+3使用pandas保存数据

1获得数据:打开我最喜欢的一本书之一《爱因斯坦的梦》,点击下方的全部短评,复制地址栏“https://book.douban.com/subject/1030789/comments/”,导入requests,使用requests.get获取网页源码。

定位到图书短评的URL

2解析数据:导入bs4 ,解析网页数据(Chrome浏览器中右键检查Inspect,找到不同短评的标签叫做

),寻找数据(寻找p comment-content),for循环打印(循环查找所有出现comment-content的地方,出现一条即是一条短评)。

通过Chrome审查功能定位到每条短评的标签位置

3保存数据:导入pandas ,新建list对象,使用to_csv写入

图书短评爬虫代码如下:

importrequests,pandas

frombs4importBeautifulSoup

r = requests.get('https://book.douban.com/subject/1030789/comments/';).text

soup = BeautifulSoup(r,'lxml')

pattern = soup.find_all('p','comment-content')

foriteminpattern:

print(item.string)

comments = []

foriteminpattern:

comments.append(item.string)

df = pandas.DataFrame(comments)

df.to_csv('comments_book.csv',encoding='utf_8_sig')

运行后生成的csv文件如下(可以看到,左右两侧完全一致,免去了手工复制粘贴的繁琐):

3.3爬取豆瓣影评

换一个我喜欢的电影《秋刀鱼之味》。

豆瓣网站是个蛮奇怪的存在,因为影评和书评的页面结构不一样,比如刚才看到书评中短评标签叫做“

”,而电影短评页面标记只有p,没有comment-content。所以代码中需要相应修改解析的位置,但不可避免的仅用p标记,会出来一些不想要的垃圾数据需要进一步清洗。

影评爬虫代码:

importrequests,pandas

frombs4importBeautifulSoup

r = requests.get('https://movie.douban.com/subject/1294433/comments/';).text

soup = BeautifulSoup(r,'lxml')

pattern = soup.find_all('p')#不包括comment-content

foriteminpattern:

print(item.string)

comments = []

foriteminpattern:

comments.append(item.string)

df = pandas.DataFrame(comments)

df.to_csv('comments_film.csv',encoding='utf_8_sig')

再对比爬出的结果和原网页,会发现前三行是无用信息,删去即可,其它短评都爬下来了:

4.总结

这次我试图通过实操步骤,将爬虫的编写方式和应用场景简单化呈现。但背后还会有很多背景知识,比如网页的html(骨架)+css(衣服)+script(动作)结构,比如不同渲染方式网站翻页时URL变化的差异(同步加载HTML渲染URL改变、异步加载Ajax渲染URL不改变)、HTTP的两种请求方式(post、get)…… 这些是给自己知识体系添砖加瓦、补充血肉使其丰满的过程。在抓住主脉络后,包裹四周的知识积累决定了爬虫技术是见习还是资深。

我上面代码第一行不太规范,import理论上应该一个module或package一行,而不是放在一行写、逗号隔开,这一点stackoverflow上有人做过解答:

学习过程中会发现,码农的世界里有很多好玩的东西,比如找package安装方法时看到的这个,只有讲究的人和强迫症一定要在非必要时升级升级再升级:

以及这个:(Pandas本意是Python Data Analysis Library缩写,没想到还有pandas-bamboo的扩展包,可能从熊猫啃竹子衍生来的数据清洗吧)

(感谢DC学院的课程!未完待续)

本文来自企鹅号 - ZY月谈媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - ZY月谈媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档