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

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

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="96ed-362a-22c2-5ea2 grid_view" 2 li 3 div class="362a-22c2-5ea2-fcd3 item" 4 div class="22c2-5ea2-fcd3-a950 pic" 5 em class="3d70-6c8c-bbea-8123 "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="6c8c-bbea-8123-f91d " 8 /a 9 /div10 div class="bbea-8123-f91d-5a95 info"11 div class="8123-f91d-5a95-0a41 hd"12 a href="http://movie.douban.com/subject/1292052/" class="f91d-5a95-0a41-ec8d "13 span class="5a95-0a41-ec8d-9d3b title"肖申克的救赎/span14 span class="0a41-ec8d-9d3b-0e45 title" / The Shawshank Redemption/span15 span class="ec8d-9d3b-0e45-d50f other" / 月黑高飞(港) / *** 1995(台)/span16 /a17 18 19 span class="9d3b-0e45-d50f-5e2a playable"[可播放]/span20 /div21 div class="0e45-d50f-5e2a-96ed bd"22 p class="d50f-5e2a-96ed-362a "23 导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...br24 1994 / 美国 / 犯罪 剧情25 /p26 27 28 div class="5e2a-96ed-362a-22c2 star"29 span class="96ed-362a-22c2-5ea2 rating5-t"em9.6/em/span30 span646374人评价/span31 /div32 33 p class="362a-22c2-5ea2-fcd3 quote"34 span class="22c2-5ea2-fcd3-a950 inq"希望让人自由。/span35 /p36 /div37 /div38 /div39 /li

其中em class="3d70-6c8c-bbea-8123 "1/em代表排名,span class="6c8c-bbea-8123-f91d title"肖申克的救赎/span代表电影名,其他信息的含义也很容易能看出来。

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

1 pattern = re.compile(u'div.*?class="bbea-8123-f91d-5a95 item".*?div.*?class="8123-f91d-5a95-0a41 pic".*?' 2 + u'em.*?class="f91d-5a95-0a41-ec8d "(.*?)/em.*?' 3 + u'div.*?class="5a95-0a41-ec8d-9d3b info".*?span.*?class="0a41-ec8d-9d3b-0e45 title"(.*?)' 4 + u'/span.*?span.*?class="ec8d-9d3b-0e45-d50f title"(.*?)/span.*?' 5 + u'span.*?class="9d3b-0e45-d50f-5e2a other"(.*?)/span.*?/a.*?' 6 + u'div.*?class="0e45-d50f-5e2a-96ed bd".*?p.*?class="d50f-5e2a-96ed-362a ".*?' 7 + u'导演: (.*?) ' 8 + u'主演: (.*?)br' 9 + u'(.*?) / (.*?) / '10 + u'(.*?)/p'11 + u'.*?div.*?class="5e2a-96ed-362a-22c2 star".*?em(.*?)/em'12 + u'.*?span(.*?)人评价/span.*?p.*?class="96ed-362a-22c2-5ea2 quote".*?'13 + u'span.*?class="362a-22c2-5ea2-fcd3 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="22c2-5ea2-fcd3-a950 item".*?div.*?class="3d70-6c8c-bbea-8123 pic".*?'34 + u'em.*?class="6c8c-bbea-8123-f91d "(.*?)/em.*?'35 + u'div.*?class="bbea-8123-f91d-5a95 info".*?span.*?class="8123-f91d-5a95-0a41 title"(.*?)'36 + u'/span.*?span.*?class="f91d-5a95-0a41-ec8d title"(.*?)/span.*?'37 + u'span.*?class="5a95-0a41-ec8d-9d3b other"(.*?)/span.*?/a.*?'38 + u'div.*?class="0a41-ec8d-9d3b-0e45 bd".*?p.*?class="ec8d-9d3b-0e45-d50f ".*?'39 + u'导演: (.*?) '40 + u'主演: (.*?)br'41 + u'(.*?) / (.*?) / '42 + u'(.*?)/p'43 + u'.*?div.*?class="9d3b-0e45-d50f-5e2a star".*?em(.*?)/em'44 + u'.*?span(.*?)人评价/span.*?p.*?class="0e45-d50f-5e2a-96ed quote".*?'45 + u'span.*?class="d50f-5e2a-96ed-362a 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是该预告片的真正地址(该地址是时间的函数,不唯一!

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

相关文章

怎么找网络黑客(黑客网络中文版)

你要了解“蜜罐”这个词语。不过,如果你的电脑没有好东西,他们是不会看你电脑硬盘的。你得想个办法吸引他们,比如,让他们知道你的电脑有最新的艺术片。 你把杀毒软件关闭,防火墙卸载了,漏洞补丁删除掉他们就会...

66小游戏:新用户免费领取0.36元!

66小游戏是一个手机小游戏平台,新用户注册免费赠予0.36米,可直接提现到微信零钱,秒到账!签到,玩游戏,做义务,约请密友都有金币,金币可兑换现金,从收益来看,都很微薄,不外内里的小游戏还挺好玩的,建...

黑客的帅图(黑客帅气图片)

黑客的帅图(黑客帅气图片)

本文目录一览: 1、求黑客帝国剧照人气网盘资源~跪求!谢谢!! 2、有黑客帝国海报最新网盘资源嘛,高清免费谢谢!! 3、为什么黑客都是多台显示器,看上去好帅的? 4、最帅的黑客 5、有...

电脑的内存太小怎么办

 XP系统软件节约运行内存,加速开机速度的方式以下: 1. 禁止使用压缩文件夹作用   倘若你开启zip文件得话用winzip或是winrar软件得话,下列提升是一个非常好的提升,Win...

低俗小说主要内容(低俗小说主题)

低俗小说主要内容(低俗小说主题)

本文导读目录: 1、《低俗小说》这部剧到底讲了什么?又好在哪里? 2、《低俗小说》讲了一个什么故事? 3、低俗小说讲的是什么 4、电影《低俗小说》(Pulp Fiction)里,包含了哪些...

2020年放假时间安排表是什么 2020元旦放假放几天

2020年只剩余最终的一个 月上下。大伙儿希望的2020年的国庆假期放几日好搞好分配。2020年的一部分暑假早已出去。五一节放五天。那麼2020年放假了时间安排表是啥 2020米旦放假放几日。产生...