获取豆瓣动作电影好评前100名
代码
import urllib2
import json
import re
class DBSpider(object):
"""豆瓣电影爬虫"""
def __init__(self):
"""初始化请求参数"""
self.url = "https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=100"
self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
def send_request(self, url):
"""发送请求类"""
request = urllib2.Request(url=url, headers=self.headers)
response = urllib2.urlopen(request)
return response.read()
def write_file(self, data):
"""将请求结果写入文件"""
with open(u'豆瓣动作电影评分排名前100.txt', 'a') as f:
f.write(data)
def get_detail_data(self, url):
data = self.send_request(url)
release_data_list = [match[0] for match in
re.findall(r'<span property="v:initialReleaseDate" content="(.*?)">(.*?)</span>', data)]
release_data = "/".join(release_data_list)
runtime = re.search(r'<span property="v:runtime" content="(.*)">', data).group(1)
return release_data, runtime
def format_data(self, data):
data_list = json.loads(data)
for index, data in enumerate(data_list, 1):
title = data["title"].encode("utf-8")
url = data["url"].encode("utf-8")
try:
release_data, runtime = self.get_detail_data(url)
except Exception as e:
release_data, runtime = "", ""
print(e)
score = data["score"].encode("utf-8")
actors_list = data["actors"]
actors = "/".join(actors_list).encode("utf-8")
regions_list = data["regions"]
regions = "/".join(regions_list).encode("utf-8")
types_list = data["types"]
types = "/".join(types_list).encode("utf-8")
str_for_write = """
NO.%d
片名:%s
地址:%s
评分:%s
主演:%s
国家:%s
类型:%s
片长:%s
上映时间:%s
""" \
% (index, title, url, score, actors, regions, types, runtime, release_data)
self.write_file(str_for_write)
print("正在获取第%d个数据……" % index)
def run(self):
"""启动方法"""
data = self.send_request(self.url)
self.format_data(data)
if __name__ == '__main__':
dou_ban_spider = DBSpider()
dou_ban_spider.run()
获取的结果
NO.1
片名:这个杀手不太冷
地址:https://movie.douban.com/subject/1295644/
评分:9.4
主演:让·雷诺/娜塔莉·波特曼/加里·奥德曼/丹尼·爱罗/彼得·阿佩尔/迈克尔·巴达鲁科/艾伦·格里尼/伊丽莎白·瑞根/卡尔·马图斯维奇/弗兰克·赛格/麦温/乔治·马丁/罗伯特·拉萨多/亚当·布斯奇/马里奥·托迪斯科/萨米·纳塞利
国家:法国
类型:剧情/动作/犯罪
片长:110
上映时间:1994-09-14(法国)
NO.2
片名:七武士
地址:https://movie.douban.com/subject/1295399/
评分:9.2
主演:三船敏郎/志村乔/稻叶义男/宫口精二/千秋实/加东大介/木村功
国家:日本
类型:动作/冒险/剧情
片长:160
上映时间:1954-04-26(日本)
NO.3
片名:指环王3:王者无敌
地址:https://movie.douban.com/subject/1291552/
评分:9.1
主演:维果·莫腾森/伊利亚·伍德/西恩·奥斯汀/丽芙·泰勒/伊恩·麦克莱恩/奥兰多·布鲁姆/凯特·布兰切特/米兰达·奥图/安迪·瑟金斯/雨果·维文/多米尼克·莫纳汉/比利·博伊德/马尔顿·索克斯/卡尔·厄本/克里斯托弗·李/约翰·瑞斯-戴维斯
国家:美国/新西兰
类型:剧情/动作/奇幻/冒险
片长:201
上映时间:2004-03-12(中国大陆)/2003-12-17(美国)