什么是爬虫
在互联网领域通常指的是一种能够自动抓取网站数据的技术。具体来说,它是一种按照既定规则访问网站并提取信息的程序或脚本。这些规则可以是预先设定的,也可以是动态学习到的。爬虫的主要目的是为了获取网络上公开可用的信息,这些信息可能包括文本、图像、视频等各种形式的数据
这篇博客主要针对小白进行爬虫入门,采用的语言是python,感兴趣可继续往下读。
环境准备
一台电脑(windows操作系统)、python3.10
python3.10安装后,就需要准备第三方库
在windows的powershell窗口内执行如下两个命令,若不报错,即可。
pip install parsel
pip install requests
爬虫代码
新建一个文件,命名”douban_scrapy.py“,文件内容如下,执行代码命令为
python douban_scrapy.py
先看全部代码,然后挨个解释
import json #引入json包,用于数据格式转换
import parsel #引入数据解析包
import requests #引入请求地址包
def get_movie_data():
# 模拟浏览器发送请求
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
} #headers一定要有,用于模拟浏览器请求
response = requests.get(url=url, headers=headers)
print(response) #验证请求是否争取,若response.status=200则表示请求正确
# 把 response.text 文本数据转换成 selector 对象
selector = parsel.Selector(response.text)
# 获取所有li标签
lis = selector.css('.grid_view li')
# 遍历出每个li标签内容,将内容保存至txt文件
with open("data.txt","w",encoding='utf-8') as f:
for li in lis:
# 获取电影标题 hd 类属性 下面的 a 标签下面的 第一个span标签里面的文本数据 get()输出形式是 字符串获取一个 getall() 输出形式是列表获取所有
title = li.css('.hd a span:nth-child(1)::text').get() # get()输出形式是 字符串
movie_list = li.css('.bd p:nth-child(1)::text').getall() # getall() 输出形式是列表
star = movie_list[0].strip().replace('\xa0\xa0\xa0', '').replace('/...', '')
movie_info = movie_list[1].strip().split('\xa0/\xa0') # ['1994', '美国', '犯罪 剧情']
movie_time = movie_info[0] # 电影上映时间
movie_country = movie_info[1] # 哪个国家的电影
movie_type = movie_info[2] # 什么类型的电影
rating_num = li.css('.rating_num::text').get() # 电影评分
people = li.css('.star span:nth-child(4)::text').get() # 评价人数
summary = li.css('.inq::text').get() # 一句话概述
dit = {
'电影名字': title,
'参演人员': star,
'上映时间': movie_time,
'拍摄国家': movie_country,
'电影类型': movie_type,
'电影评分': rating_num,
'评价人数': people,
'电影概述': summary,
}
# print 格式化输出模块
print(dit)
f.writelines(json.dumps(dit,ensure_ascii=False))
f.writelines('\n')
if __name__ == '__main__':
#代码入口
get_movie_data()
代码解释
代码入口在
if __name__ == '__main__': get_movie_data()
定义请求的url
url = 'https://movie.douban.com/top250'
触发请求至服务器
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' } response = requests.get(url=url, headers=headers)
获得服务器的返回数据response.text,并转换成selector 对象,用于后续解析
数据解析可参考代码注释
数据保存
文件保存采用with open的方式写入txt文件,写入文件名为”data.txt“,内容如下供参考
with open("data.txt","w",encoding='utf-8') as f:
...
f.writelines(json.dumps(dit,ensure_ascii=False))
f.writelines('\n')
{"电影名字": "肖申克的救赎", "参演人员": "导演: 弗兰克·德拉邦特 Frank Darabont主演: 蒂姆·罗宾斯 Tim Robbins ", "上映时间": "1994", "拍摄国家": "美国", "电影类型": "犯罪 剧情", "电影评分": "9.7", "评价人数": "2978283人评价", "电影概述": "希望让人自由。"} {"电影名字": "霸王别姬", "参演人员": "导演: 陈凯歌 Kaige Chen主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha...", "上映时间": "1993", "拍摄国家": "中国大陆 中国香港", "电影类型": "剧情 爱情 同性", "电影评分": "9.6", "评价人数": "2200612人评价", "电影概述": "风华绝代。"} {"电影名字": "阿甘正传", "参演人员": "导演: 罗伯特·泽米吉斯 Robert Zemeckis主演: 汤姆·汉克斯 Tom Hanks / ...", "上映时间": "1994", "拍摄国家": "美国", "电影类型": "剧情 爱情", "电影评分": "9.5", "评价人数": "2219478人评价", "电影概述": "一部美国近现代史。"} {"电影名字": "泰坦尼克号", "参演人员": "导演: 詹姆斯·卡梅隆 James Cameron主演: 莱昂纳多·迪卡普里奥 Leonardo...", "上映时间": "1997", "拍摄国家": "美国 墨西哥", "电影类型": "剧情 爱情 灾难", "电影评分": "9.5", "评价人数": "2256001人评价", "电影概述": "失去的才是永恒的。 "} {"电影名字": "这个杀手不太冷", "参演人员": "导演: 吕克·贝松 Luc Besson主演: 让·雷诺 Jean Reno / 娜塔莉·波特曼 ...", "上映时间": "1994", "拍摄国家": "法国 美国", "电影类型": "剧情 动作 犯罪", "电影评分": "9.4", "评价人数": "2350373人评价", "电影概述": "怪蜀黍和小萝莉不得不说的故事。"} {"电影名字": "千与千寻", "参演人员": "导演: 宫崎骏 Hayao Miyazaki主演: 柊瑠美 Rumi Hîragi / 入野自由 Miy...", "上映时间": "2001", "拍摄国家": "日本", "电影类型": "剧情 动画 奇幻", "电影评分": "9.4", "评价人数": "2302650人评价", "电影概述": "最好的宫崎骏,最好的久石让。 "} {"电影名字": "美丽人生", "参演人员": "导演: 罗伯托·贝尼尼 Roberto Benigni主演: 罗伯托·贝尼尼 Roberto Beni...", "上映时间": "1997", "拍摄国家": "意大利", "电影类型": "剧情 喜剧 爱情 战争", "电影评分": "9.5", "评价人数": "1359870人评价", "电影概述": "最美的谎言。"} {"电影名字": "星际穿越", "参演人员": "导演: 克里斯托弗·诺兰 Christopher Nolan主演: 马修·麦康纳 Matthew Mc...", "上映时间": "2014", "拍摄国家": "美国 英国 加拿大", "电影类型": "剧情 科幻 冒险", "电影评分": "9.4", "评价人数": "1913935人评价", "电影概述": "爱是一种力量,让我们超越时空感知它的存在。"} {"电影名字": "盗梦空间", "参演人员": "导演: 克里斯托弗·诺兰 Christopher Nolan主演: 莱昂纳多·迪卡普里奥 Le...", "上映时间": "2010", "拍摄国家": "美国 英国", "电影类型": "剧情 科幻 悬疑 冒险", "电影评分": "9.4", "评价人数": "2122943人评价", "电影概述": "诺兰给了我们一场无法盗取的梦。"} {"电影名字": "辛德勒的名单", "参演人员": "导演: 史蒂文·斯皮尔伯格 Steven Spielberg主演: 连姆·尼森 Liam Neeson...", "上映时间": "1993", "拍摄国家": "美国", "电影类型": "剧情 历史 战争", "电影评分": "9.5", "评价人数": "1148933人评价", "电影概述": "拯救一个人,就是拯救整个世界。"} {"电影名字": "楚门的世界", "参演人员": "导演: 彼得·威尔 Peter Weir主演: 金·凯瑞 Jim Carrey / 劳拉·琳妮 Lau...", "上映时间": "1998", "拍摄国家": "美国", "电影类型": "剧情 科幻", "电影评分": "9.4", "评价人数": "1773421人评价", "电影概述": "如果再也不能见到你,祝你早安,午安,晚安。"} {"电影名字": "忠犬八公的故事", "参演人员": "导演: 莱塞·霍尔斯道姆 Lasse Hallström主演: 理查·基尔 Richard Ger...", "上映时间": "2009", "拍摄国家": "美国 英国", "电影类型": "剧情", "电影评分": "9.4", "评价人数": "1429073人评价", "电影概述": "永远都不能忘记你所爱的人。"} {"电影名字": "海上钢琴师", "参演人员": "导演: 朱塞佩·托纳多雷 Giuseppe Tornatore主演: 蒂姆·罗斯 Tim Roth / ...", "上映时间": "1998", "拍摄国家": "意大利", "电影类型": "剧情 音乐", "电影评分": "9.3", "评价人数": "1719098人评价", "电影概述": "每个人都要走一条自己坚定了的路,就算是粉身碎骨。 "} {"电影名字": "三傻大闹宝莱坞", "参演人员": "导演: 拉库马·希拉尼 Rajkumar Hirani主演: 阿米尔·汗 Aamir Khan / 卡...", "上映时间": "2009", "拍摄国家": "印度", "电影类型": "剧情 喜剧 爱情 歌舞", "电影评分": "9.2", "评价人数": "1905091人评价", "电影概述": "英俊版憨豆,高情商版谢耳朵。"} {"电影名字": "放牛班的春天", "参演人员": "导演: 克里斯托夫·巴拉蒂 Christophe Barratier主演: 让-巴蒂斯特·莫尼...", "上映时间": "2004", "拍摄国家": "法国 瑞士 德国", "电影类型": "剧情 音乐", "电影评分": "9.3", "评价人数": "1347959人评价", "电影概述": "天籁一般的童声,是最接近上帝的存在。 "} {"电影名字": "机器人总动员", "参演人员": "导演: 安德鲁·斯坦顿 Andrew Stanton主演: 本·贝尔特 Ben Burtt / 艾丽...", "上映时间": "2008", "拍摄国家": "美国", "电影类型": "科幻 动画 冒险", "电影评分": "9.3", "评价人数": "1351794人评价", "电影概述": "小瓦力,大人生。"} {"电影名字": "疯狂动物城", "参演人员": "导演: 拜伦·霍华德 Byron Howard / 瑞奇·摩尔 Rich Moore主演: 金妮弗·...", "上映时间": "2016", "拍摄国家": "美国", "电影类型": "喜剧 动画 冒险", "电影评分": "9.2", "评价人数": "2006991人评价", "电影概述": "迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。"} {"电影名字": "无间道", "参演人员": "导演: 刘伟强 / 麦兆辉主演: 刘德华 Andy Lau / 梁朝伟 Tony Leung Chiu W...", "上映时间": "2002", "拍摄国家": "中国香港", "电影类型": "剧情 犯罪 惊悚", "电影评分": "9.3", "评价人数": "1407473人评价", "电影概述": "香港电影史上永不过时的杰作。"} {"电影名字": "控方证人", "参演人员": "导演: 比利·怀尔德 Billy Wilder主演: 泰隆·鲍华 Tyrone Power / 玛琳·...", "上映时间": "1957", "拍摄国家": "美国", "电影类型": "剧情 犯罪 悬疑", "电影评分": "9.6", "评价人数": "593401人评价", "电影概述": "比利·怀德满分作品。"} {"电影名字": "大话西游之大圣娶亲", "参演人员": "导演: 刘镇伟 Jeffrey Lau主演: 周星驰 Stephen Chow / 吴孟达 Man Tat Ng...", "上映时间": "1995", "拍摄国家": "中国香港 中国大陆", "电影类型": "喜剧 爱情 奇幻 古装", "电影评分": "9.2", "评价人数": "1571599人评价", "电影概述": "一生所爱。"} {"电影名字": "熔炉", "参演人员": "导演: 黄东赫 Dong-hyuk Hwang主演: 孔侑 Yoo Gong / 郑有美 Yu-mi Jung ", "上映时间": "2011", "拍摄国家": "韩国", "电影类型": "剧情", "电影评分": "9.4", "评价人数": "955352人评价", "电影概述": "我们一路奋战不是为了改变世界,而是为了不让世界改变我们。"} {"电影名字": "教父", "参演人员": "导演: 弗朗西斯·福特·科波拉 Francis Ford Coppola主演: 马龙·白兰度 M...", "上映时间": "1972", "拍摄国家": "美国", "电影类型": "剧情 犯罪", "电影评分": "9.3", "评价人数": "997166人评价", "电影概述": "千万不要记恨你的对手,这样会让你失去理智。"} {"电影名字": "触不可及", "参演人员": "导演: 奥利维·那卡什 Olivier Nakache / 艾力克·托兰达 Eric Toledano主...", "上映时间": "2011", "拍摄国家": "法国", "电影类型": "剧情 喜剧", "电影评分": "9.3", "评价人数": "1155090人评价", "电影概述": "满满温情的高雅喜剧。"} {"电影名字": "当幸福来敲门", "参演人员": "导演: 加布里尔·穆奇诺 Gabriele Muccino主演: 威尔·史密斯 Will Smith ...", "上映时间": "2006", "拍摄国家": "美国", "电影类型": "剧情 传记 家庭", "电影评分": "9.2", "评价人数": "1557636人评价", "电影概述": "平民励志片。 "} {"电影名字": "寻梦环游记", "参演人员": "导演: 李·昂克里奇 Lee Unkrich / 阿德里安·莫利纳 Adrian Molina主演: ...", "上映时间": "2017", "拍摄国家": "美国", "电影类型": "喜剧 动画 奇幻 音乐", "电影评分": "9.1", "评价人数": "1742737人评价", "电影概述": "死亡不是真的逝去,遗忘才是永恒的消亡。"}