1.准备工作

python是一门相对于其他语言来说肥肠自由的语言,从它只能用空白符作为强制缩进符就能够感受到它与众不同,爱用不用的独特气质,像这样一位潇洒任性的公子自然免不得要提前做一些准备才能驾驭。

在开始使用python前你需要:

了解编程方法(曾经学过任何一门计算机语言即可)

了解python2.x与3.x的区别,根据寄几的需求确定所使用的版本(我没有了解)

确定版本后,了解对应版本的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浏览器下打开网页,并右键选择“显示网页源代码”,找到与短评内容对应的代码块。

这是两条短评的源代码,可以判断一个短评代码块是从

开始的,代码块中除用户名、头像、评价星数、评价时间、有用数、短评内容各不相同以外,其他都是相同的代码。其中短评内容在

这里需要引入正则表达式

http://www.runoob.com/regexp/regexp-syntax.html

根据代码编写正则表达式:

.*?' (.*?)

.*?' (.*?)

其中.*?是正则表达式中的懒惰匹配,(.*?)是捕获组,即将这个位置匹配到的数据缓存下来,也就是我们需要找的短评内容。

5.构(ban)建(yun)代码beta版

要看最终代码的直接跳到第9节

直接引用豆瓣top250的爬虫代码,并对代码中的内容进行修改。

为了尽快调试程序,将爬虫结束start值设为了100。

这里的正则做了一些修改,因为当只设置一个数组元素时,输出的数据仅包含一个字符,例,当设置为输出用户名时,实际只输出了用户名的第一个字;但当设置了2个数组元素时,输出数据就恢复了正常。(未查出原因,有兴趣的盆友可以debug一下,然后告诉我原因hhhhh)

所以这里的正则设置捕获2组数据,而实际输出所需的那组数据。

代码运行界面

输出短评结果

这里可以看到爬取短评时会出现一些源代码,这里的源代码对应的是

来自移动端发布的手机标识

这是为了标识出来自移动端发布的短评消息的一串代码,此类代码一共有三种,Android端、iPhone端和web端,可以通过程序筛选去除,为了更快的解(tou)决(lan),我使用的是文本去重复工具

https://quchuchongfu.renrensousuo.com/

可以一键去除文本中大段的重复内容,不仅可以去掉重复的源代码,还可以将第三节中因为固定start值带来的重复短评也去掉。

6.模拟登陆

爬虫调试成功后,我开始了野心勃勃的6w短评爬取征途,将start结束值设置成了64000,准备代码跑起来,爬虫爬起来,悠哉地喝杯茶,吃顿饭,再回来看结果。但是……

TypeError:expected string or buffer

经过很长一段时间的调试,大致知道了报错的原因,访客模式下豆瓣短评仅能访问前10页,如果想要访问后面的页面,必须要登录。

模拟登陆的方法有2种,一种是post信息登录,还有一种是cookie登录。

网上查询的几种方法查看post信息,firefox的插件httpfox不支持mac,调试代理工具fiddler也没有Mac版,对应的Mac版软件Charles也莫名其妙记录不到豆瓣post数据,chrome检查结果中看不到form data(仿佛看到了命运之神的嫌弃…)。

查看cookie

cookie登录的方法就比较简单了,在chrome中登录豆瓣,右键网页选择“检查”,在弹出窗口中按照network→www.douban.com (没有就刷新一下网页)→headers查看cookie,将cookie:后的内容全部复制,添加到代码中headers的user-agent后面中。

self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',

'cookie': '将复制的cookie信息贴在此处'}

self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',

'cookie': '将复制的cookie信息贴在此处'}

7.短评爬虫1.0

已更新优化代码2.0,查看文字后可直接跳过代码1.0继续阅读,2.0源码见第9节修改代码后,程序继续执行,但偶尔会发生卡顿,于是添加了超时响应代码,3秒没有响应就再次发送请求。最终代码如下:

8.爬虫被封禁的一些问题

单个ip单个用户在短时间内请求网站数据过快,都会被豆瓣的反爬虫机制发现并判断为机器操作而封禁,解决的方法有几种。

1.使用ip代理池,隔一段时间随机换一个ip(我还没研究出来)

2.降低爬取速度,设置爬虫间隔时间(我也还没研究出来)

3.将爬取内容分块,分时间段爬取(爬一会,歇一会ㄒ_ㄒ我用得就是这个方法,所以才叫半自动爬虫啊ㄒ_ㄒ)

1.使用ip代理池,隔一段时间随机换一个ip(我还没研究出来)

2.降低爬取速度,设置爬虫间隔时间(我也还没研究出来)

3.将爬取内容分块,分时间段爬取(爬一会,歇一会ㄒ_ㄒ我用得就是这个方法,所以才叫半自动爬虫啊ㄒ_ㄒ)

花了半天的时间,最终将《三生三世十里桃花》电影版的6w多条短评都爬了下来(感谢指点我的程序员小哥哥们!感谢互联网!感谢郭嘉!)提取了高频词汇,大家对电影的高度评价果然不出我的所料,我不禁流下了激动的眼泪…

《三生三世十里桃花》6w豆瓣短评关键词

2017.08.17 没想到一篇偷懒卖二的文章居然上了首页(ㄒ_ㄒ其他文写死了N多脑细胞也没人看),索性再贴一个昨天刚做的词云,纪录片《二十二》豆瓣1w条短评关键词,推荐正在读这篇文的你,去电影院看看这些老人们。

《二十二》1w豆瓣短评关键词

这世界真好,谢谢你们:-D

2017.08.19

9.代理设置

经过2天的努力,我会用代理啦!

为什么要使用代理的原因请参考第8节。

依旧参考这位大神的代理设置例子:Python爬虫技巧---设置代理IP

http://blog.csdn.net/lammonpeter/article/details/52917264

使用代理的方法是先从开放代理网站批量爬取代理IP存放在指定列表中(get_ip_list),再从指定列表中随机获取单个IP(get_random_ip)作为代理IP。

整体代码如下:

本文作者:天善智能社区Deserts X 摘自:Python爱好者社区

python画桃花_Python小白如何使用爬虫自动抓取《三生三世十里桃花》豆瓣电影短评...相关推荐

  1. python爬取豆瓣短评_爬取并简单分析豆瓣电影短评

    导语 利用Python爬取并简单分析豆瓣电影短评. 说起来挺逗的,去年爬豆瓣短评的时候还是可以爬个几万条数据的,昨天我还想着终于可以起个唬人的标题了,什么爬取了xxx电影的xxx万条数据. 于是昨晚写 ...

  2. Python爬虫实现抓取腾讯视频所有电影-源码【实战必学】

    用python实现的抓取腾讯视频所有电影的爬虫 1. # -*- coding: utf-8 -*-2. import re3. import urllib24. from bs4 import Be ...

  3. python画哪吒_Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评

    前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...

  4. python数据抓取技术与实战训练_师傅带徒弟学Python:项目实战1:网络爬虫与抓取股票数据...

    本视频基于**Python 3.X版本 本视频课程是第四篇第一个实战项目,内容包括网络爬虫技术.使用urllib爬取数据.使用Selenium爬取数据.使用正则表达式.使用BeautifulSoup库 ...

  5. 用python做课表_python模拟登陆urp教务处选课抓取课表

    !!!选课功能已添加!!! 本文地址 csdn 前段时间小编写了一篇利用爬虫做词云分析的帖子,有粉丝反馈说想进一步学习爬虫,所以小编今天就用爬虫模拟登陆学校的教务处为例和大家共同学习.坊间有传言说好多 ...

  6. 不会 Python 没关系,手把手教你用 web scraper 抓取豆瓣电影 top 250 和 b 站排行榜

    苏生不惑第190 篇原创文章,将本公众号设为 星标 ,第一时间看最新文章. 关于Python之前分享过很多文章了: Python 抓取知乎电影话题下万千网友推荐的电影,这个国庆节不愁没电影看了 王菲k ...

  7. 不会 Python 没关系,手把手教你用 web scraper 抓取豆瓣电影 top 250 和 b 站排行榜...

    苏生不惑第190 篇原创文章,将本公众号设为星标,第一时间看最新文章. 关于Python之前分享过很多文章了: Python 抓取知乎电影话题下万千网友推荐的电影,这个国庆节不愁没电影看了 王菲k歌又 ...

  8. 三生三世十里桃花用计算机怎么弄,三生三世十里桃花ios如何用电脑玩 三生三世十里桃花ios模拟器教程...

    原标题:三生三世十里桃花ios如何用电脑玩 三生三世十里桃花ios模拟器教程 现在有很多小伙伴都在玩三生三世十里桃花手游,不过相对于传统的在手机上进行游戏,很多人都倾向于新玩法,就是在电脑上玩三生三世 ...

  9. 三生三世十里桃花用计算机怎么弄,三生三世十里桃花ios如何用电脑玩 三生三世十里桃花ios电脑教程...

    现在有很多小伙伴都在玩三生三世十里桃花手游,不过相对于传统的在手机上进行游戏,很多人都倾向于新玩法,就是在电脑上玩三生三世十里桃花手游.下面小编就给亲们介绍下三生三世十里桃花ios电脑版教程哈! 1. ...

最新文章

  1. Java项目:学生信息管理系统(java+SSM+JSP+layui+maven+mysql)
  2. Android画图学习总结(四)——Animation(上)
  3. CSS3---选择器
  4. 变形版汉诺塔:LeetCode:70爬楼梯
  5. 深入了解这些Java框架,看看哪个更适合你?
  6. 歌词数据解析、歌词滚动、歌词进度控制功能的实现(基于js-base64、lyric-parser、better-scroll),以vue项目为例
  7. 微信查询订单API与商派ecstore订单状态对接
  8. python编程常见小技巧
  9. 如何修改opencart的模版适合为mycncart系统使用
  10. 代码修改以及公式推导
  11. 【Oracle】Oracle分析函数详解
  12. 中考计算机excel考点,信息技术中考excel操作题部分操作要求及操作要点指导
  13. Eclipse:更换背景图片
  14. 电商型网站要怎么制作?把住这三个关键点
  15. 利用Python创建Excel条形图
  16. 浅谈Windows XP系统漏洞的封堵
  17. jQuery学习-基本使用
  18. 遇到人生低谷期该怎么度过?
  19. 推荐系统——Converged Recommendation System Based on RNN and BP Neural Networks
  20. 多台ubuntu电脑实现时间同步

热门文章

  1. picoCTF2020_Web
  2. 坑死人不偿命之微信支付回调
  3. Win7系统DIY工具 v 1.0
  4. python字符串排序方法
  5. 国内最早的android手机,三强争霸 国内10大热门Android手机排行
  6. iMac新款预示?苹果终止了4K 21.5英寸iMac的两种规格
  7. 哲♂学三幻神带你学习ConstraintLayout(约束布局)
  8. 水晶服务器维护,《新丝路》服务器维护公告
  9. Beam Search(集束搜索/束搜索)
  10. c语言日期间的天数,C语言计算两个日期之间的天数