作者:大吉大利小米酱
Python爱好者社区专栏作者 机械工程师/伪程序媛/18线灵魂画手/段子手/脑洞女王 python交友娱乐会所:613176398
简书:http://www.jianshu.com/u/8e45f2f3b6c1
知乎:https://www.zhihu.com/people/otakurice
前言:
本文主要针对有一定编程基础,但完全没有学习过python,又希望快速通过爬虫对网页中一些同类信息进行提取的人。
前两天看了《三生三世十里桃花》,我的表情是懵逼的,内心是崩溃的,心情是想哭的。回家立刻打开了豆瓣刷起了影评,看到6w多条的短评,突然想深♂入了解众豆友对于《三》的普遍想法,于是我将魔爪伸向了python,一门我多次从入门到放弃的语言。
鉴于之前的学习,都是从教程第一页开始,又在第一页结束,基本可以认定为是python小白。
1.准备工作
python是一门相对于其他语言来说肥肠自由的语言,从它只能用空白符作为强制缩进符就能够感受到它与众不同,爱用不用的独特气质,像这样一位潇洒任性的公子自然免不得要提前做一些准备才能驾驭。
在开始使用python前你需要:
了解编程方法(曾经学过任何一门计算机语言即可)
了解python2.x与3.x的区别,根据寄几的需求确定所使用的版本(我没有了解)
确定版本后,了解对应版本的python语法(我入门到放弃了)
在电脑上安装python(我去抱程序员小哥哥的大腿了)
总而言之,在看完百度百科对python名词的定义之后,为了能够敏捷而又不失优雅地完成这次操作,我慎(tou)重(lan)选择了直接进行实(ban)战(yun)演(dai)练(ma)。废话不多说,开八。
由于想要得到的是豆瓣的内容,所以选择了抓取豆瓣电影Top250的爬虫实例作为参考,具体内容见:抓取豆瓣电影Top250
http://www.cnblogs.com/jzincnblogs/p/4899348.html
这里使用的软件版本是python2,于是我果断地选择了使用python2.7版(对!我就是这么果断!)。
2.分析爬虫原理
个人对简易爬虫的理解,是机器语言对用户操作的模拟,通过程序快速处理并实现对于用户来说重复费时的工作。
模拟用户操作
以《三》的短评为例,首先键入豆瓣短评的网址https://movie.douban.com/subject/25823277/comments?status=P,载入网页后,在用户名和评分下方(定位信息),即可看到用户的短评,6w条短评,我们就要不停的点击下一页来查看,这无疑是既重复,又费时的事情。
而使用python爬虫,就只需要几分钟的时间就可以搞定啦(明明折腾了2天)。
3.分析url
可能有人会说,我平时都不是这么看短评的,我是先进主页→搜索三生三世→再点影片详情…(闭嘴)。所有在进入目标网页之前的操作,都可以以直接输入目标网址来代替。
《三》的热门短评首页网址结构:
movie.douban.com/subject/25823277/comments?status=P
《三》的热门短评第二页网址结构:
movie.douban.com/subject/25823277/comments?start=21&limit=20&sort=new_score&status=P
《三》的热门短评第三页网址结构:
movie.douban.com/subject/25823277/comments?start=44&limit=20&sort=new_score&status=P
……往后翻页网址中有变化的只有start=后面的数字
可以看出,热门短评只有首页与其他页的结构不同,于是我尝试了将第二页start=后面的数字改为0,即网址为:
movie.douban.com/subject/25823277/comments?start=0&limit=20&sort=new_score&status=P
得到了与短评首页相同的网页。
网址构成
movie.douban.com是豆瓣电影的主页。
/subject/25823277/是影片对应的编号,如果想要看其他电影的短评,在此处将编号改为其他电影的即可。
comments是与短评中好友短评对应,在选择好友短评时显示为follows_comments。
limit代表每页仅显示20个短评内容,sort=new_score代表显示类型是按热门短评排序,按最新短评排序时sort=time,但此时的start后面的数字是乱序的。
而唯一变化的是start=后的参数,这个参数并非如像每页20条短评内容一般,按照每20一次增加,在翻了几页之后,发现除了递增数字差>20以外,没有其他明显规律,又因为在按最新短评排序是,start值为乱序,推理出start值对应的可能是评价过电影的用户,包括写短评以及只评星级未写评价内容的用户,排序方式是按热门程度依次排序(我猜的)。
由于不清楚真实的start递增规律,于是依旧采用了start+=20这种方法来实现翻页,这种方法的弊端是由于与实际翻页得到数字错位较大而在页面出现重复的短评内容,这个会在输出结果中进行修复。(欢迎大佬指点优化)
4.分析网页
设置好目标网址之后,就可以打开目标网页了,首先来看野生的网页内容,我们所需要的信息就是红框内的内容。
三生三世十里桃花 豆瓣短评页面
在chrome浏览器下打开网页,并右键选择“显示网页源代码”,找到与短评内容对应的代码块。
这是两条短评的源代码,可以判断一个短评代码块是从
长按二维码向我转账
觉得不错就请作者喝瓶水吧~
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
13622 有用 王大根 看过 2017-08-03
年度最烂,真的是年度最烂,前半部像杨洋和刘亦菲主持的少儿节目,后半部毁天灭地只为衬托他们狗屎一样的爱情。杨洋现在表演时的自恋感,已经到了他深情望着女演员的时候,你都会怀疑他是不是在看对方眼里映出的他自己帅气的倒影……
这条短评跟影片无关