python爬虫入门

什么是爬虫

在互联网领域通常指的是一种能够自动抓取网站数据的技术。具体来说,它是一种按照既定规则访问网站并提取信息的程序或脚本。这些规则可以是预先设定的,也可以是动态学习到的。爬虫的主要目的是为了获取网络上公开可用的信息,这些信息可能包括文本、图像、视频等各种形式的数据

 这篇博客主要针对小白进行爬虫入门,采用的语言是python,感兴趣可继续往下读。

环境准备

一台电脑(windows操作系统)、python3.10

Python3 环境搭建 | 菜鸟教程

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人评价", "电影概述": "死亡不是真的逝去,遗忘才是永恒的消亡。"}
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值