使用爬取2000年之后的电影

使用python爬取豆瓣2000年之后的电影

1、序言

今天我们就一起来看下如何使用python爬取豆瓣2000年之后的电影,首先需要找到我们需要爬取数据的网址,这里博主已经在网上找到一个比较好的链接了,大家可以点击试试看看(豆瓣2000年之后的电影

我们所需要的爬取数据内容是关于电影的信息,比如说导演、编剧、主演、类型、制片国家、语言、上映时间、片长、又名。下面我们以豆瓣2000年之后电影中的第一部为例(成事在人 Invictus (2009)),下面是我们所需要爬取的信息。

导演: 克林特·伊斯特伍德
编剧: 安东尼·佩卡姆 / 约翰·卡林
主演: 摩根·弗里曼 / 马特·达蒙 / 托尼·戈罗奇 / 帕特里克·莫佛肯 / 马特·斯特恩 / [更多…](javascript:😉
类型: 剧情 / 传记 / 历史 / 运动
制片国家/地区: 美国
语言: 英语 / 南非语 / 毛利语 / 祖鲁语 / 科萨语 / 南梭托语
上映日期: 2009-12-11(美国)
片长: 134分钟
又名: 不败雄心(港) / 打不倒的勇者(台) / 不可征服 / 不可战胜 / 永不屈服

如果大家不想要这么多信息,可以在后面的代码中删除自己不需要爬取的信息;或者大家需要更多的信息,可以在代码中添加自己想要的信息。

博主存储数据的文件格式为txt文本文件,大家如果需要使用数据库或者excel表格,大家可以去网上查询如何存储。

2、安装库

下面我们讲下在进行爬取的时候,需要做的一些准备工作,首先我们需要安装一些python库:requests、lxml、time、random

 pip install requests
 pip install lxml

一般而言,time和random课库在大家安装pycharm的时候,会跟随pycharm自动安装,在使用的时候直接导入就可以啦。

3、源代码

'''
@author:不败顽童
使用python爬取豆瓣2000年之后的电影
'''
import time
import random

import requests
from lxml import etree

url = "https://www.douban.com/doulist/1411365/"

baseUrl = "https://www.douban.com/doulist/1411365/?start="
headers = {
	"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"
}


# 请求网页数据
def askUrl(url):
	try:
		response = requests.get(url=url, headers=headers)
		html = response.text
		return html
	except:
		time.sleep(random.randint(3, 10))
		html = askUrl(url)
		return html
	finally:
		pass


# 获取数据
def getData(baseUrl):
	for i in range(0, 5):  # 一般爬取5页
		pageUrl = baseUrl + str(i * 25)
		html = askUrl(pageUrl)
		selector = etree.HTML(html)
		urls = selector.xpath('//div/div[2]/div[4]/a/@href')
		datalist = []
		for url in urls:
			data = {}
			pageHtml = askUrl(url=url)
			selector = etree.HTML(pageHtml)
			# content = selector.xpath('//div[starts-with(@id,"a")]/text()')
			try:
				# 1、标题
				title = selector.xpath('//*[@id="content"]/h1/span[1]/text()')
				data['title'] = title[0]

				# 2、豆瓣评分
				rating = selector.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong/text()')
				data['rating'] = rating[0]
				# //*[@id="item7982712"]/div/div[2]/div[6]

				# 3、导演
				director = selector.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')
				data['director'] = director[0]

				# 4、编剧
				attrs = selector.xpath('//*[@id="info"]/span[2]/span[2]/a/text()')
				data['attrs'] = attrs

				# 5、演员
				# /html/body/div[3]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/span[3]/span[2]/span[1]/a
				actor = selector.xpath('//*/div[@id="info"]/span[3]/span[2]/span/a[@rel="v:starring"]/text()')
				data['actor'] = actor

				# 6、类别
				categories = selector.xpath('//*/div[@id="info"]/span[@property="v:genre"]/text()')
				data['categories'] = categories

				# 7、语言
				language = selector.xpath('//*[@id="info"]/text()[5]/text()')
				data['language'] = language

				# 8、时长
				time = selector.xpath('//*[@id="info"]/span[@property="v:runtime"]/text()')
				data['time'] = time[0]
			except:
				pass

			datalist.append(data)
			print(data)
		save(datalist, "豆瓣2000年之后的电影1.txt")
	return datalist


# 保存到txt文件中
def save(datas, filename):
	file = open(filename, mode='a', encoding='utf-8')
	for data in datas:
		file.writelines('title:\t' + data['title'] + '\n')
		file.writelines('rating:\t' + data['rating'] + '\n')
		file.writelines('director:\t' + data['director'] + '\n')
		file.writelines('attrs:\t' + str(data['attrs']) + '\n')
		file.writelines('actor:\t' + str(data['actor']) + '\n')
		file.writelines('categories:\t' + str(data['categories']) + '\n')
		file.writelines('language:\t' + str(data['language']) + '\n')
		file.writelines('time:\t' + str(data['time']) + '\n')
		file.writelines('\n\n')
	file.close()


# 主程序
def dowork():
	datas = getData(baseUrl)
	filename = "豆瓣2000年之后的电影1.txt"
	save(datas, filename)


if __name__ == '__main__':
	dowork()

4、运行结果

下面我们一起来看一些代码运行的结果

{'title': '成事在人 Invictus', 'rating': '8.2', 'director': '克林特·伊斯特伍德', 'attrs': ['安东尼·佩卡姆', '约翰·卡林'], 'actor': [], 'categories': ['剧情', '传记', '历史', '运动'], 'language': [], 'time': '134分钟'}
{'title': '第九区 District 9', 'rating': '8.3', 'director': '尼尔·布洛姆坎普', 'attrs': ['尼尔·布洛姆坎普', '特丽·塔歇尔'], 'actor': [], 'categories': ['剧情', '动作', '科幻', '惊悚'], 'language': [], 'time': '112分钟'}
{'title': '和莎莫的500天 (500) Days of Summer', 'rating': '8.0', 'director': '马克·韦布', 'attrs': ['斯科特·纽斯塔德', '迈克尔·H·韦伯'], 'actor': [], 'categories': ['剧情', '喜剧', '爱情'], 'language': [], 'time': '95分钟'}
{'title': '变形金刚 Transformers', 'rating': '8.3', 'director': '迈克尔·贝', 'attrs': ['罗伯托·奥奇', '艾里克斯·库兹曼', '约翰·罗杰斯'], 'actor': [], 'categories': ['动作', '科幻'], 'language': [], 'time': '144分钟'}
{'title': '大狗民 หมานคร', 'rating': '7.9', 'director': '韦西·沙赞那庭', 'attrs': ['韦西·沙赞那庭'], 'actor': [], 'categories': ['喜剧', '爱情', '奇幻'], 'language': [], 'time': '100分钟'}
{'title': '囚室211 Celda 211', 'rating': '8.0', 'director': '丹尼尔·蒙宗', 'attrs': ['丹尼尔·蒙宗', '豪尔赫·格力加耶切瓦利亚'], 'actor': [], 'categories': ['剧情', '动作'], 'language': [], 'time': '113 分钟'}
{'title': '尽情游戏 Micmacs à tire-larigot', 'rating': '8.0', 'director': '让-皮埃尔·热内', 'attrs': ['让-皮埃尔·热内', '纪尧姆·洛朗'], 'actor': [], 'categories': ['喜剧', '犯罪'], 'language': [], 'time': '105 分钟'}
{'title': '南极料理人 南極料理人', 'rating': '8.3', 'director': '冲田修一', 'attrs': ['冲田修一', '西村淳'], 'actor': [], 'categories': ['喜剧'], 'language': [], 'time': '125分钟'}

5、结束语

好的,今天关于如何使用python爬取2000年之后的电影就介绍到此啦,打击如果对本次文章还有什么疑问的话,欢迎大家在评论下面留言。大家如果有兴趣观看更多有意思的编程项目,可以关注下我哟。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JavaGPT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值