爬虫豆瓣TOP250电影数据

今天是开通博客的第一天

  • 目的
  • 记录
  • 爬取豆瓣TOP250电影数据

目的

我写博客的目的很简单,主要是想记录一些自己学习python的历程,后期包括一些其他方面的学习,目前在看唐松老师写的《Python网络爬虫,从入门到实践》这本书,感觉还是很适合我这种小白!

记录

  1. 页响应状态码 r.status_code用来检测响应的状态码,如果返回值为200,则表示请求成果
  2. r.encoding为服务器内容使用的文本编码
  3. r.content是字节方式的响应体,会自动解码gzip和deflate编码的响应数据
  4. r.json()是Requests中内置的JSON解码器

示例代码如下:

import requests
url='https://blog.csdn.net/weixin_41931602/article/details/80209360'
#随便拿个CSDN的一篇文章作为url
html=requests.get(url)
print('文本编码:',html.encoding)
print('响应状态码:',html.status_code)
print('字符串方式的响应体:',html.text)

输出结果如下:

文本编码: UTF-8
响应状态码: 200
字符串方式的响应体: <!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <link rel="canonical" href="https://blog.csdn.net/weixin_41931602/article/details/80209360"/>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="renderer" content="webkit"/>
    <meta name="force-rendering" content="webkit"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="referrer" content="always">
    <meta http-equiv="Cache-Control" content="no-siteapp" /><link rel="alternate" media="handheld" href="#" />
    <meta name="shenma-site-verification" content="5a59773ab8077d4a62bf469ab966a63b_1497598848">
        <meta name="csdn-baidu-search"  content='{"autorun":true,"install":true,"keyword":"使用scrapy做爬虫遇到的一些坑:No module named items以及一些解决方案 - weixin_41931602的博客"}'>
    
    <link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
    <title>使用scrapy做爬虫遇到的一些坑:No module named items以及一些解决方案 - weixin_41931602的博客 - CSDN博客</title>

        
                  
					</p>
			</div>
					</div>
	
    
    
    		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-view='{"mod":"popu_387","con":",https://blog.csdn.net/qq_24137739/article/details/79871549,BlogCommendFromBaidu_9"}' data-track-click='{"mod":"popu_387","con":",https://blog.csdn.net/qq_24137739/article/details/79871549,BlogCommendFromBaidu_9"}'>
			<div class="content">
				<a href="https://blog.csdn.net/qq_24137739/article/details/79871549" target="_blank" title="ModuleNotFoundError: No module named 'scrapy'">
				<h4 class="text-truncate oneline">
						<em>Module</em>NotFoundError: No <em>module</em> <em>named</em> 'scrapy'				</h4>
				<div class="info-box d-flex align-content-center">
					<p class="date-and-readNum oneline">
						<span class="date hover-show">04-09</span>
						<span class="read-num hover-hide">
              阅读数 
							1549</span>
						</p>
					</div>
				</a>
					<p class="content">
						<a href="https://blog.csdn.net/qq_24137739/article/details/79871549" target="_blank" title="ModuleNotFoundError: No module named 'scrapy'">
							<span class="desc oneline">我已经安装了scrapy 但是又说没有scrapy模块 怎么解决</span>
						</a>
						  <span class="blog_title_box oneline ">
							                <span class="type-show type-show-blog type-show-after">博文</span>
                                  <a target="_blank" href="https://blog.csdn.net/qq_24137739">来自:	<span class="blog_title"> qq_24137739的博客</span></a>
                							              </span>
					</p>
			</div>
					</div>
	
    
          <div class="recommend-item-box blog-expert-recommend-box">
				<div class="d-flex">
					<div class="blog-expert-recommend">
						<div class="blog-expert">
							<div class="blog-expert-flexbox"></div>
						</div>
					</div>
				</div>
      </div>
    
    		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-view='{"mod":"popu_387","con":",https://blog.csdn.net/u011318077/article/details/86707780,BlogCommendClickRateRank_10"}' data-track-click='{"mod":"popu_387","con":",https://blog.csdn.net/u011318077/article/details/86707780,BlogCommendClickRateRank_10"}'>
			<div class="content">
				<a href="https://blog.csdn.net/u011318077/article/details/86707780" target="_blank" title="Scrapy 模块不存在的错误(ModuleNotFoundError: No module named xxx)">
				<h4 class="text-truncate oneline">
						<em>Scrapy</em> 模块不存在的错误(<em>Module</em>NotFoundError: No <em>module</em> <em>named</em> xxx)				</h4>
				<div class="info-box d-flex align-content-center">
					<p class="date-and-readNum oneline">
						<span class="date hover-show">01-30</span>
						<span class="read-num hover-hide">
              阅读数 
							307</span>
						</p>
					</div>
				</a>
					<p class="content">
						<a href="https://blog.csdn.net/u011318077/article/details/86707780" target="_blank" title="Scrapy 模块不存在的错误(ModuleNotFoundError: No module named xxx)">
							<span class="desc oneline">实现的案例:scrapy图片下载(一):三行代码实现scrapy图片下载http://www.scrapyd.cn/example/174.html1.错误1:没有模块直接Pycharm中运行爬虫主程...</span>
						</a>
						  <span class="blog_title_box oneline ">
							                <span class="type-show type-show-blog type-show-after">博文</span>
                                  <a target="_blank" href="https://blog.csdn.net/u011318077">来自:	<span class="blog_title"> 沐言-BigTree</span></a>
                							              </span>
					</p>
			</div>
					</div>
	
    
    
    		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-view='{"mod":"popu_387","con":",https://blog.csdn.net/u012939880/article/details/80429173,BlogCommendFromBaidu_11"}' data-track-click='{"mod":"popu_387","con":",https://blog.csdn.net/u012939880/article/details/80429173,BlogCommendFromBaidu_11"}'>
			<div class="content">
				<a href="https://blog.csdn.net/u012939880/article/details/80429173" target="_blank" title="爬虫入门体验">
				<h4 class="text-truncate oneline">
						<em>爬虫</em>入门体验				</h4>
				<div class="info-box d-flex align-content-center">
					<p class="date-and-readNum oneline">
						<span class="date hover-show">05-24</span>
						<span class="read-num hover-hide">
              阅读数 
							2+</span>
						</p>
					</div>
				</a>
					<p class="content">
						<a href="https://blog.csdn.net/u012939880/article/details/80429173" target="_blank" title="爬虫入门体验">
							<span class="desc oneline">连续做了一周的爬虫了,但是都是简单的那种,简单的总结下,后面有时间在写个工具。1.网页获取,由于网站情况不一样,有的网站有相关的反爬虫技术,要对网站情况进行分析,才能获得想要的网页信息。2.续爬,爬虫...</span>
						</a>
						  <span class="blog_title_box oneline ">
							                <span class="type-show type-show-blog type-show-after">博文</span>
                                  <a target="_blank" href="https://blog.csdn.net/u012939880">来自:	<span class="blog_title"> 梦想与实现</span></a>
                							              </span>
					</p>
			</div>
					</div>
	
    
    
    		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-view='{"mod":"popu_387","con":",https://blog.csdn.net/zsn686493/article/details/69680979,BlogCommendFromBaidu_12"}' data-track-click='{"mod":"popu_387","con":",https://blog.csdn.net/zsn686493/article/details/69680979,BlogCommendFromBaidu_12"}'>
			<div class="content">
				<a href="https://blog.csdn.net/zsn686493/article/details/69680979" target="_blank" title="网络爬虫是个什么东西(一)">
				<h4 class="text-truncate oneline">
						网络<em>爬虫</em>是个什么东西(一)				</h4>
				<div class="info-box d-flex align-content-center">
					<p class="date-and-readNum oneline">
						<span class="date hover-show">04-08</span>
						<span class="read-num hover-hide">
              阅读数 
							1+</span>
						</p>
					</div>
				</a>
					<p class="content">
						<a href="https://blog.csdn.net/zsn686493/article/details/69680979" target="_blank" title="网络爬虫是个什么东西(一)">
							<span class="desc oneline">大学最后时期比较认真的研究和开发的爬虫程序,日子长了为了防止忘记索性记个日记,也方便其他需要了解的人,过程比较艰辛,不过当时还是很有乐趣。...</span>
						</a>
						  <span class="blog_title_box oneline ">
							                <span class="type-show type-show-blog type-show-after">博文</span>
                                  <a target="_blank" href="https://blog.csdn.net/zsn686493">来自:	<span class="blog_title"> zsn686493的博客</span></a>
                							              </span>
					</p>
			</div>
					</div>
	
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_61" data-pid="61" data-track-view='{"mod":"kp_popu_61-557","con":",,"}' data-track-click='{"mod":"kp_popu_61-557","con":",,"}'><div id="three_ad13" class="mediav_ad" ></div>
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>
<script>

········

爬取豆瓣TOP250电影数据

按照书中的指导,成功完成代码,分析思路很重要!

import requests
from bs4 import BeautifulSoup


def get_movies():
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',
        'Host': 'movie.douban.com'
    }#构造分析头
    movie_list = []
    for i in range(0, 10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25)
        r = requests.get(link, headers=headers, timeout=10)
        print(str(i + 1), "页响应状态码:", r.status_code)

        soup = BeautifulSoup(r.text, "lxml")
        div_list = soup.find_all('div', class_='hd')
        for each in div_list:
            movie = each.a.span.text.strip()
            #strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)
            movie_list.append(movie)
            #list.append()方法用于在列表末尾添加新的对象,即在每次list后面加上循环得到的movie数据
    return movie_list


movies = get_movies()
print(movies)#原书上print(movie_list),其实是print(movies),不然会显示变量未定义

输出结果为:

1 页响应状态码: 200
2 页响应状态码: 200
3 页响应状态码: 200
4 页响应状态码: 200
5 页响应状态码: 200
6 页响应状态码: 200
7 页响应状态码: 200
8 页响应状态码: 200
9 页响应状态码: 200
10 页响应状态码: 200
['肖申克的救赎', '霸王别姬', '这个杀手不太冷', '阿甘正传', '美丽人生', '泰坦尼克号', '千与千寻', '辛德勒的名单', '盗梦空间', '忠犬八公的故事', '机器人总动员', '三傻大闹宝莱坞', '海上钢琴师', '放牛班的春天', '楚门的世界', '大话西游之大圣娶亲', '星际穿越', '龙猫', '教父', '熔炉', '无间道', '疯狂动物城', '当幸福来敲门', '怦然心动', '触不可及', '乱世佳人', '蝙蝠侠:黑暗骑士', '活着', '少年派的奇幻漂流', '控方证人', '天堂电影院', '鬼子来了', '指环王3:王者无敌', '十二怒汉', '天空之城', '摔跤吧!爸爸', '飞屋环游记', '大话西游之月光宝盒', '搏击俱乐部', '罗马假日', '哈尔的移动城堡', '闻香识女人', '辩护人', '窃听风暴', '两杆大烟枪', '末代皇帝', '飞越疯人院', '死亡诗社', '指环王2:双塔奇兵', '素媛', 'V字仇杀队', '教父2', '寻梦环游记', '指环王1:魔戒再现', '海豚湾', '饮食男女', '美丽心灵', '狮子王', '情书', '钢琴家', '本杰明·巴顿奇事', '美国往事', '看不见的客人', '黑客帝国', '小鞋子', '西西里的美丽传说', '大闹天宫', '让子弹飞', '拯救大兵瑞恩', '哈利·波特与魔法石', '致命魔术', '七宗罪', '被嫌弃的松子的一生', '音乐之声', '低俗小说', '天使爱美丽', '沉默的羔羊', '勇敢的心', '猫鼠游戏', '蝴蝶效应', '剪刀手爱德华', '春光乍泄', '心灵捕手', '禁闭岛', '布达佩斯大饭店', '穿条纹睡衣的男孩', '入殓师', '阿凡达', '幽灵公主', '阳光灿烂的日子', '致命ID', '第六感', '加勒比海盗', '狩猎', '玛丽和马克思', '断背山', '重庆森林', '摩登时代', '喜剧之王', '告白', '大鱼', '消失的爱人', '一一', '射雕英雄传之东成西就', '阳光姐妹淘', '甜蜜蜜', '爱在黎明破晓前', '小森林 夏秋篇', '驯龙高手', '侧耳倾听', '红辣椒', '请以你的名字呼唤我', '倩女幽魂', '恐怖直播', '风之谷', '上帝之城', '超脱', '爱在日落黄昏时', '菊次郎的夏天', '幸福终点站', '哈利·波特与死亡圣器(下)', '小森林 冬春篇', '杀人回忆', '7号房的礼物', '神偷奶爸', '借东西的小人阿莉埃蒂', '萤火之森', '唐伯虎点秋香', '超能陆战队', '蝙蝠侠:黑暗骑士崛起', '怪兽电力公司', '岁月神偷', '电锯惊魂', '七武士', '谍影重重3', '真爱至上', '疯狂原始人', '无人知晓', '喜宴', '萤火虫之墓', '东邪西毒', '英雄本色', '贫民窟的百万富翁', '黑天鹅', '记忆碎片', '血战钢锯岭', '心迷宫', '傲慢与偏见', '时空恋旅人', '荒蛮故事', '雨人', '纵横四海', '教父3', '达拉斯买家俱乐部', '玩具总动员3', '卢旺达饭店', '完美的世界', '花样年华', '海边的曼彻斯特', '海洋', '恋恋笔记本', '虎口脱险', '你看起来好像很好吃', '二十二', '被解救的姜戈', '头脑特工队', '无敌破坏王', '冰川时代', '燃情岁月', '你的名字。', '雨中曲', '我是山姆', '三块广告牌', '爆裂鼓手', '人工智能', '未麻的部屋', '穿越时空的少女', '魂断蓝桥', '猜火车', '模仿游戏', '一个叫欧维的男人决定去死', '房间', '忠犬八公物语', '完美陌生人', '罗生门', '恐怖游轮', '魔女宅急便', '阿飞正传', '香水', '哪吒闹海', '浪潮', '朗读者', '黑客帝国3:矩阵革命', '海街日记', '可可西里', '谍影重重2', '谍影重重', '战争之王', '牯岭街少年杀人事件', '地球上的星星', '青蛇', '一次别离', '惊魂记', '疯狂的石头', '追随', '终结者2:审判日', '源代码', '小萝莉的猴神大叔', '步履不停', '初恋这件小事', '再次出发之纽约遇见你', '新龙门客栈', '撞车', '天书奇谭', '梦之安魂曲', '爱在午夜降临前', '海蒂和爷爷', '无耻混蛋', '东京物语', '城市之光', '绿里奇迹', '彗星来的那一夜', '血钻', '这个男人来自地球', 'E.T. 外星人', '末路狂花', '2001太空漫游', '聚焦', '勇闯夺命岛', '变脸', '发条橙', '秒速5厘米', '黄金三镖客', '黑鹰坠落', '功夫', '非常嫌疑犯', '卡萨布兰卡', '我爱你', '国王的演讲', '千钧一发', '美国丽人', '疯狂的麦克斯4:狂暴之路', '遗愿清单', '奇迹男孩', '碧海蓝天', '荒岛余生', '驴得水', '枪火', '英国病人', '荒野生存']

进程已结束,退出代码0

你可能感兴趣的:(爬虫豆瓣TOP250电影数据)