看了几天的python语法,还是应该写个东西练练手。刚好假期里面看电影,找不到很好的影片,于是有个想法,何不搞个爬虫把电影天堂里面8分以上的电影爬出来。做完花了两三个小时,撸了这么一个程序。反正蛮简单的,思路和之前用nodejs写爬虫一样。

爬虫的入口从分页的列表开始,比如美剧的列表第一页地址这样: http://www.ygdy8.net/html/gndy/oumei/list_7_1.html,第二页是http://www.ygdy8.net/html/gndy/oumei/list_7_2.html,是有规律的,所以就可以遍历所有的页面,分别抓取每页里面的影视资源,再进入每条电影的详情页面,抓取出下载地址,存到文件里。

技术上用的是requests 和 BeautifulSoup两个模块。

具体做法是,先从电影列表中定位每条资源中的IMDB(b)评分大于8分的资源,并且将结果放入movie对象中。

class Movie:

    def __init__(self, name, url, score, link):
self.name = name
self.url = url
self.score = score
self.link = link def __str__(self):
return '%s,\t%s分,\t%s' % (self.name, self.score, self.link) __repr__ = __str__ # 过滤资源
def filterMovie(url):
resultList = []
soup = getSoup(url)
tables = soup.find_all('table', class_='tbspan')
for table in tables:
nameA = table.find('a', text=re.compile("《"))
td = table.find('td', text=re.compile("IMD"))
if td is not None:
scoreStr = re.findall(r"评分 (.+?)/10", td.text)
if(len(scoreStr) > 0):
try:
score = float(scoreStr[0])
if(score > 8):
name = nameA.text
url = site + nameA['href']
print('url:', url)
print('title:', name)
print('score:', score)
downloadLink = getDownloadLink(url)
movie = Movie(name, url, score, downloadLink)
resultList.append(movie)
except:
print('error !!')
return resultList

其中的getDownloanLink(url)是进入电影详情页获取下载链接。

def getDownloadLink(url):
soup = getSoup(url)
downloadTd = soup.find('td', attrs={"style": "WORD-WRAP: break-word"})
downloadA = downloadTd.find('a')
return downloadA['href']

然后是将电影信息存入到文件data.txt中。

def saveInfo(movieList):
fileObj = open('data.txt', 'a')
for movie in movieList:
movie_str = str(movie)
print('movie info:', movie_str)
global lineNo
fileObj.write('(' + str(lineNo) + ') ' + movie_str)
fileObj.write('\n')
fileObj.write('———————————')
fileObj.write('\n')
lineNo += 1
fileObj.close()

经过上面的步骤,即可将某一页的电影资源抓取到,并且存入文件中。

程序的主入口,遍历列表即可。目前他们只有155页,就限制这么多页码。

if __name__ == '__main__':
for index in range(156):
index += 1
url = 'http://www.ygdy8.net/html/gndy/oumei/list_7_' + \
str(index) + '.html'
getPageResource(url)

具体代码在github中,传送门,爬到的结果也放入代码仓库中了。有兴趣的,可以下载看看。

Python爬虫 -- 抓取电影天堂8分以上电影的更多相关文章

  1. Python爬虫----抓取豆瓣电影Top250

    有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...

  2. python 爬虫抓取心得

    quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...

  3. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  4. python爬虫抓取哈尔滨天气信息(静态爬虫)

    python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip i ...

  5. python爬虫抓取豆瓣电影

    抓取电影名称以及评分,并排序(代码丑炸) import urllib import re from bs4 import BeautifulSoup def get(p): t=0 k=1 n=1 b ...

  6. Python 爬虫: 抓取花瓣网图片

    接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...

  7. python爬虫 抓取一个网站的所有网址链接

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  8. Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)

    最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分析(必须要弄清楚自己的目的),另外就是要考虑对爬取的数据归类,存储. ...

  9. Python爬虫--抓取糗事百科段子

    今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...

随机推荐

  1. 记录今天学习python中for与while循环针对break和continue的用法

    python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...

  2. WPS项目编号问题

    问题:文档需要编号如下: 1.(标题1) 1.1(标题2) 1.1.1(标题3) 1.2 1.2.1 2.(标题1) 2.1(标题2) 2.1.1(标题3) 2.2 2.2.1 方法一: 第一步,打开 ...

  3. python变量——黑板客老师课程学习

    1.和C++.Java的区别: 动态类型:不需要声明a的类型. a=34 type(a) <type  ‘int’> 一切皆对象: 4 2.数字: 自动转换类型:a=34  A=3.14 ...

  4. phpmyadmin

    下载地址:https://www.phpmyadmin.net/ 详情:http://baike.baidu.com/link?url=OIngLv0mpiYTZl_sCEmryWkHgUYqZeHr ...

  5. 安装crab

    1. crab 介绍: Recommender systems in Python 官网介绍:http://muricoca.github.io/crab/ 在安装过程中,发现一个问题,我已经安装了A ...

  6. hdu 2202 最大三角形 (凸包)

    最大三角形 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. android笔记:ViewPager实现界面的滑动

    最近在学习ViewPager实现界面的滑动,拜读了郭神的博客文章,并抽取归纳了自己对ViewPager的理解. ViewPager实现界面滑动的步骤如下: 1.在xml布局内加入控件android.s ...

  8. 开源PLM软件Aras详解四 ItemType的概念

    首先,我们需要了解什么是ItemType,俗称对象类 官方一点就是ItemType是一个用来定义业务对象类的业务对象类 通过ItemType定义的每个业务对象类可以产生各自的实例对象 通过ItemTy ...

  9. oracle 创建数据表空间和用户

    --创建临时表空间(不必须)create temporary tablespace zwtest tempfile 'D:\Java\oracle\oradata\zwtest.dbf' size 5 ...

  10. HTML5和CSS3基础教程(第8版)-读书笔记(4)

    第16章 表单 表单有两个基本组成部分:访问者在页面上可以看见并填写的控件.标签和按钮的集合:以及用于获取信息并将其转化为可以读取或计算的格式的处理脚本. 基本的表单字段类型包括文本框.单选按钮.复选 ...