首页 > 代码库 > 随想录(豆瓣网站的爬行)
随想录(豆瓣网站的爬行)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
喜欢看电影的同学对豆瓣肯定不是很陌生。一般我们在选择将要看的电影之前,都会到豆瓣上看一看评价如何。如果评价太低的话,其实看得意义不大了,相反如果看的价值很过,那无论如何使不能错过的。豆瓣的积分大部分是准确的,但是也不能排除恶意刷积分的情况。
很长时间以来,自己都想把豆瓣上所有好看的电影一网打尽,但是苦于没有现成的工具,只好自己来写。现在的脚本语言比较多,python、go都可以完成这么一项任务。简单的几句就可以完成很多的工作。
要想完成这么一个任务,我们可以拆成几个事情来做?比如说怎么下载网页?怎么获取电影名称?怎么获取积分?怎么爬行等等。
首先,还是放出我自己写的豆瓣电影爬行代码,如下所示,
#encoding=utf-8 #!/usr/bin/python import os import sys import re import time import smtplib import urllib import urllib2 import traceback from urllib import urlopen page=[] def check_num_exist(data): for i in range(0, len(page)): if data=http://www.mamicode.com/=page[i]:> (1)web page的下载非常简单,urllib2公式就可以解决;
(2)获取title和score主要靠正则表达式来完成;
(3)web爬行的方法,这里采用了深度优先的选择,比较简单,也比较容易实现;
(4)很多时候,网站会对连续的外部爬行进行屏蔽处理,所以需要用add_header将我们伪装成浏览器访问;
(5)web爬行不能太过分,一般中间要有sleep几秒钟;
(6)爬行过程中的所有异常都要考虑到,否则无法长时间运行;
(7)积极发现web网页的规律,比如说豆瓣电影基本都是movie.douban.com/subject/*的结构;
(8)大胆尝试,积极改错就可以了,很少能一步到位的。上面的只是电影的爬行,简单改造一下就是书的查询,
#encoding=utf-8 #!/usr/bin/python import os import sys import re import time import smtplib import urllib import urllib2 import traceback from urllib import urlopen page=[] def check_num_exist(data): for i in range(0, len(page)): if data=http://www.mamicode.com/=page[i]:>
还有音乐的爬行,#encoding=utf-8 #!/usr/bin/python import os import sys import re import time import smtplib import urllib import urllib2 import traceback from urllib import urlopen page=[] def check_num_exist(data): for i in range(0, len(page)): if data=http://www.mamicode.com/=page[i]:>
最后,就是兴趣小组的爬行,这是最好玩的。你可以看到很多搞笑的兴趣小组,#encoding=utf-8 #!/usr/bin/python import os import sys import re import time import smtplib import urllib import urllib2 import traceback from urllib import urlopen page=[] def check_num_exist(data): for i in range(0, len(page)): if data=http://www.mamicode.com/=page[i]:>最后,还是希望大家爬行豆瓣的时候,尽量文明一点。太频繁的话,会被server forbidden的。
随想录(豆瓣网站的爬行)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。