Python爬虫 -- 抓取电影天堂8分以上电影
看了几天的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分以上电影的更多相关文章
- Python爬虫----抓取豆瓣电影Top250
有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...
- python 爬虫抓取心得
quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...
- Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python爬虫抓取哈尔滨天气信息(静态爬虫)
python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip i ...
- python爬虫抓取豆瓣电影
抓取电影名称以及评分,并排序(代码丑炸) import urllib import re from bs4 import BeautifulSoup def get(p): t=0 k=1 n=1 b ...
- Python 爬虫: 抓取花瓣网图片
接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...
- python爬虫 抓取一个网站的所有网址链接
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)
最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分析(必须要弄清楚自己的目的),另外就是要考虑对爬取的数据归类,存储. ...
- Python爬虫--抓取糗事百科段子
今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...
随机推荐
- Maven学习总结(二)——Maven项目构建过程练习
上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...
- Linux命令之reset - 终端屏幕混乱的终结者
用途说明 reset命令是用来重新初始化终端的(terminal initialization).在有些情况,终端显示会混乱无比,比如不小心显示了一个二进制文件,以前我在不知道reset命令时,只好将 ...
- free pascal 错误代码表
free pascal 错误代码表 为了方便对照检查运行时错误代码,这里把所有的错误代码的含义整理出来.(最大序号为232,中间不一定连续.user.pdf P175) Run-time errors ...
- Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名
string fileNameNo = Path.GetFileName(FileUploadImg.PostedFile.FileName); //获取文件名和扩展名string Directory ...
- VC++绘图时,利用双缓冲解决屏幕闪烁 转载
最近做中国象棋,绘制界面时遇到些问题,绘图过程中屏幕闪烁,估计都会想到利用双缓冲来解决问题,但查了下网上双缓冲的资料,发现基本是MFC的,转化为VC++后,大概代码如下: void DrawBmp(H ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(十三)ThreadSafeStream
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- Server Apache Tomcat v7.0 at localhost failed to start.
自己在学习servlet中,突然启动不了Tomcat7服务器,提示出现如下错误: 百度之后,没有找到解决办法,偶然发现是我的Web-content下--WEB-INF下--web.xml的配置文件内 ...
- Java语言环境(JDK的安装教学)
//此文档由徐浩军编写(32/64位系统都适用) 1.下载JDK安装包你 2.点击安装包开始安装 3.首先你要选择安装地址一般情况下,都会选择默认地址. (请记住这个地址,之后配置环境变量的时候需要用 ...
- Ubuntu遇到Please ensure that adb is correctly located at '...adb.exe' and can be executed 问题解决方法
上次我们在SDK更新的到最新的Android L版本之后,我发现我的ADT和android指定的版本不对应,我的ADT是22版本的,android L需要23版本以上的,版本不对应的话就无法加载这个S ...
- 去掉UItableview headerview黏性(sticky)
// 去掉UItableview headerview黏性(sticky) - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFlo ...