黑客python爬取电影(python爬取电影代码)

hacker2年前黑客文章96
本文导读目录:

python怎么抓取豆瓣电影url

#!/usr/bin/env python2.7# encoding=utf-8"""

爬取豆瓣电影TOP250 - 完整示例代码

"""import codecsimport requestsfrom bs4 import BeautifulSoup

DOWNLOAD_URL = 'httn.com/top250/'def download_page(url):

return requests.get(url, headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'

}).contentdef parse_html(html):

soup = BeautifulSoup(html)

movie_list_soup = soup.find('ol', attrs={'class': 'grid_view'})

movie_name_list = [] for movie_li in movie_list_soup.find_all('li'):

detail = movie_li.find('div', attrs={'class': 'hd'})

movie_name = detail.find('span', attrs={'class': 'title'}).getText()

movie_name_list.append(movie_name)

next_page = soup.find('span', attrs={'class': 'next'}).find('a') if next_page: return movie_name_list, DOWNLOAD_URL + next_page['href'] return movie_name_list, Nonedef main():

url = DOWNLOAD_URL with codecs.open('movies', 'wb', encoding='utf-8') as fp: while url:

html = download_page(url)

movies, url = parse_html(html)

fp.write(u'{movies}\n'.format(movies='\n'.join(movies)))if __name__ == '__main__':

main()12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

简单说明下,在目录下会生成一个文档存放电影名。python2

python怎么爬取更受欢迎的电影数据

在开发者工具中观察到该请求的Status Code是302,Response Headers中Location是该预告片的真正地址(该地址是时间的函数,不唯一! 但测试表明不同时间生成的不同的地址都能下载该预告片!

用python爬一个视频网站,因为一个影视有多个类别,所以在爬数据时会出现重复的影视作品

存为字典,做个异常判断,如果含有这个key.就跳过。么有这个key就添加到dict中

python爬取豆辫电影时候怎么样找到影片的url

看你爬什么咯?如果是网页,那就是页面代码;如果是制定内容,那爬取的时候就给定匹配的关键字,返回你指定的数据(字串,list,json都可以)

Python爬虫获取数据犯法吗?

没有的事,如果是这样的话,百度,谷歌这些搜索引擎公司也是犯法的了。他们也是爬取别人的网站,获取信息,给用户用的。其实搜索引擎就是一种爬虫。

如果网站本身不做鉴别,网站会认为爬虫和一般的浏览器的行为是一样的。

Python抓取豆瓣电影排行榜

1.观察url

首先观察一下网址的结构 http://movie.douban.com/top250?start=0filter=type= :

可以看到,问号?后有三个参数 start、filter、type,其中start代表页码,每页展示25部电影,0代表之一页,以此类推25代表第二页,50代表第三页...

filter顾名思义,是过滤已经看过的电影,filter和type在这里不重要,可以不管。

2.查看网页源代码

打开上面的网址,查看源代码,可以看到信息的展示结构如下:

1 ol class="0d58-e106-a764-2454 grid_view" 2 li 3 div class="e106-a764-2454-a0ea item" 4 div class="a764-2454-a0ea-1256 pic" 5 em class="e504-e3d8-cd1e-0f52 "1/em 6 a href="http://movie.douban.com/subject/1292052/" 7 img alt="肖申克的救赎" src="http://img3.douban.com/view/movie_poster_cover/ipst/public/p480747492.jpg" class="e3d8-cd1e-0f52-8068 " 8 /a 9 /div10 div class="cd1e-0f52-8068-daee info"11 div class="0f52-8068-daee-1dd5 hd"12 a href="http://movie.douban.com/subject/1292052/" class="8068-daee-1dd5-8a11 "13 span class="daee-1dd5-8a11-2ace title"肖申克的救赎/span14 span class="1dd5-8a11-2ace-5d27 title" / The Shawshank Redemption/span15 span class="8a11-2ace-5d27-2a16 other" / 月黑高飞(港) / *** 1995(台)/span16 /a17 18 19 span class="2ace-5d27-2a16-ffc9 playable"[可播放]/span20 /div21 div class="5d27-2a16-ffc9-0d58 bd"22 p class="2a16-ffc9-0d58-e106 "23 导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...br24 1994 / 美国 / 犯罪 剧情25 /p26 27 28 div class="ffc9-0d58-e106-a764 star"29 span class="0d58-e106-a764-2454 rating5-t"em9.6/em/span30 span646374人评价/span31 /div32 33 p class="e106-a764-2454-a0ea quote"34 span class="a764-2454-a0ea-1256 inq"希望让人自由。/span35 /p36 /div37 /div38 /div39 /li

其中em class="e504-e3d8-cd1e-0f52 "1/em代表排名,span class="e3d8-cd1e-0f52-8068 title"肖申克的救赎/span代表电影名,其他信息的含义也很容易能看出来。

于是接下来可以写正则表达式:

1 pattern = re.compile(u'div.*?class="cd1e-0f52-8068-daee item".*?div.*?class="0f52-8068-daee-1dd5 pic".*?' 2 + u'em.*?class="8068-daee-1dd5-8a11 "(.*?)/em.*?' 3 + u'div.*?class="daee-1dd5-8a11-2ace info".*?span.*?class="1dd5-8a11-2ace-5d27 title"(.*?)' 4 + u'/span.*?span.*?class="8a11-2ace-5d27-2a16 title"(.*?)/span.*?' 5 + u'span.*?class="2ace-5d27-2a16-ffc9 other"(.*?)/span.*?/a.*?' 6 + u'div.*?class="5d27-2a16-ffc9-0d58 bd".*?p.*?class="2a16-ffc9-0d58-e106 ".*?' 7 + u'导演: (.*?) ' 8 + u'主演: (.*?)br' 9 + u'(.*?) / (.*?) / '10 + u'(.*?)/p'11 + u'.*?div.*?class="ffc9-0d58-e106-a764 star".*?em(.*?)/em'12 + u'.*?span(.*?)人评价/span.*?p.*?class="0d58-e106-a764-2454 quote".*?'13 + u'span.*?class="e106-a764-2454-a0ea inq"(.*?)/span.*?/p', re.S)

在此处flag参数re.S代表多行匹配。

3.使用面向对象的设计模式编码

代码如下:

1 # -*- coding:utf-8 -*- 2 __author__ = 'Jz' 3 import urllib2 4 import re 5 import sys 6 7 class MovieTop250: 8 def __init__(self): 9 #设置默认编码格式为utf-810 reload(sys)11 sys.setdefaultencoding('utf-8')12 self.start = 013 self.param = 'filter=type='14 self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'}15 self.movieList = []16 self.filePath = 'D:/coding_file/python_file/File/DoubanTop250.txt'17 18 def getPage(self):19 try:20 URL = 'http://movie.douban.com/top250?start=' + str(self.start)21 request = urllib2.Request(url = URL, headers = self.headers)22 response = urllib2.urlopen(request)23 page = response.read().decode('utf-8')24 pageNum = (self.start + 25)/2525 print '正在抓取第' + str(pageNum) + '页数据...' 26 self.start += 2527 return page28 except urllib2.URLError, e:29 if hasattr(e, 'reason'):30 print '抓取失败,具体原因:', e.reason31 32 def getMovie(self):33 pattern = re.compile(u'div.*?class="a764-2454-a0ea-1256 item".*?div.*?class="e504-e3d8-cd1e-0f52 pic".*?'34 + u'em.*?class="e3d8-cd1e-0f52-8068 "(.*?)/em.*?'35 + u'div.*?class="cd1e-0f52-8068-daee info".*?span.*?class="0f52-8068-daee-1dd5 title"(.*?)'36 + u'/span.*?span.*?class="8068-daee-1dd5-8a11 title"(.*?)/span.*?'37 + u'span.*?class="daee-1dd5-8a11-2ace other"(.*?)/span.*?/a.*?'38 + u'div.*?class="1dd5-8a11-2ace-5d27 bd".*?p.*?class="8a11-2ace-5d27-2a16 ".*?'39 + u'导演: (.*?) '40 + u'主演: (.*?)br'41 + u'(.*?) / (.*?) / '42 + u'(.*?)/p'43 + u'.*?div.*?class="2ace-5d27-2a16-ffc9 star".*?em(.*?)/em'44 + u'.*?span(.*?)人评价/span.*?p.*?class="5d27-2a16-ffc9-0d58 quote".*?'45 + u'span.*?class="2a16-ffc9-0d58-e106 inq"(.*?)/span.*?/p', re.S)46 while self.start = 225:47 page = self.getPage()48 movies = re.findall(pattern, page)49 for movie in movies:50 self.movieList.append([movie[0], movie[1], movie[2].lstrip(' / '),

51 movie[3].lstrip(' / '), movie[4],

52 movie[5], movie[6].lstrip(), movie[7], movie[8].rstrip(),53 movie[9], movie[10], movie[11]])54 55 def writeTxt(self):56 fileTop250 = open(self.filePath, 'w')57 try:58 for movie in self.movieList:59 fileTop250.write('电影排名:' + movie[0] + '\r\n')60 fileTop250.write('电影名称:' + movie[1] + '\r\n')61 fileTop250.write('外文名称:' + movie[2] + '\r\n')62 fileTop250.write('电影别名:' + movie[3] + '\r\n')63 fileTop250.write('导演姓名:' + movie[4] + '\r\n')64 fileTop250.write('参与主演:' + movie[5] + '\r\n')65 fileTop250.write('上映年份:' + movie[6] + '\r\n')66 fileTop250.write(' *** 国家/地区:' + movie[7] + '\r\n')67 fileTop250.write('电影类别:' + movie[8] + '\r\n')68 fileTop250.write('电影评分:' + movie[9] + '\r\n')69 fileTop250.write('参评人数:' + movie[10] + '\r\n')70 fileTop250.write('简短影评:' + movie[11] + '\r\n\r\n')71 print '文件写入成功...'72 finally:73 fileTop250.close()74 75 def main(self):76 print '正在从豆瓣电影Top250抓取数据...'77 self.getMovie()78 self.writeTxt()79 print '抓取完毕...'80 81 DouBanSpider = MovieTop250()82 DouBanSpider.main()

代码比较简单,最后将信息写入一个文件,没有什么需要解释的地方。

如何用python 爬取豆瓣电影的预告片地址

经测试可知上面的完整请求地址,完全可以作为该预告片的“地址”。

PS:在开发者工具中观察到该请求的Status Code是302,Response Headers中Location是该预告片的真正地址(该地址是时间的函数,不唯一!

但测试表明不同时间生成的不同的地址都能下载该预告片!唉,不细究了)。

相关文章

暗黑客厅背景墙(暗黑客厅背景墙效果图)

暗黑客厅背景墙(暗黑客厅背景墙效果图)

黑色背景墙效果图欣赏各空间黑色背景墙设计技巧 1、背景墙打造分成两块,先用白色拼接打底,适当的错落营造层次效果,外围再用黑色分割,将背景墙分成大小不一的四块。背景墙上恰到好处的灯线处理,即便有大量的黑...

甲烷多少钱一吨,甲烷价格每吨价格

  3W阁下 不消3W6   最好是天然气批发的几多钱一吨   天然气销售价值都是按立方米来算几多的,不是按吨,详细如下: 种别 单元 零售价值 民用 元/立方米 2.05 民众处事用户 元/立方米...

周宁鲤鱼溪(周宁县鲤鱼溪介绍)

  福建省周宁县,是闽东的一个山温良恭俭让区县,这里处处是青山绿水白云蓝天五脏与五行,车辆老是行走在这绿色的山间,从西单叩头王宁德市出发,一个半小时才气到达县仙境传说2城 鲤鱼溪位于周宁县浦源村。消...

找高手黑客(怎么成为黑客高手)

黑客:编程高手,网络高手,系统高手三者的结合,具备很高的道德境界,对技术狂热追求。好好的学你的专业知识~你就是高手~ 会编成吗最基础的然后得到一个开放源码的Unix并学会使用、运行它,学会如何使用WW...

诚信第一的黑客号码(有信誉的黑客联系方式是多少)

诚信第一的黑客号码(有信誉的黑客联系方式是多少)

世界上的知名黑客有哪些? 世界十大黑客指的是世界上最顶尖的电脑高手,包括李纳斯,沃兹尼克,肯·汤普生等。黑客一词来源于英文hacker,原指醉心于计算机技术,水平高超的电脑专家,尤其是程序设计人员,早...

sis情侣

这要看对方的性格和人品而定。也有些人会拿着照片或视频,日后想作为分手要挟的砝码。如果双方都很爱对方,也同意这样做。也许是出于一种对彼此爱的一种。 直观的说app就是应用软件现在主要指的都是iosmac...