2019独角兽企业重金招聘Python工程师标准>>>

所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中。

目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250

1)确定目标网站的请求头:


打开目标网站,在网页空白处点击鼠标右键,选择“检查”。(小编使用的是谷歌浏览器)。

点击“network”,在弹出页面若长时间没有数据显示,则试一下F5刷新。

可以得到目标网页中Host和User-Agent两项。

2)找到爬取目标数据(即电影名称)在页面中的位置


右键“检查”,选择“Elements”。

或者直接找到一个电影名称,比如《肖申克的救赎》,对它右键,选择“检查”。

3)相关代码:


import requests
from bs4 import BeautifulSoup
def get_movies():headers={'user-agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','Host':'movie.douban.com'}        #定义爬取目标网页的请求头,务必和我们前面通过‘检查’到的请求头一致movie_list=[]for i in range(0,10):    #目标所包含的250项数据分布在10页之中link='https://movie.douban.com/top250?start='+str(i*25)   #定义每页的网址 r=requests.get(link,headers=headers,timeout=10)    #构建每页中的抓取请求requestprint (str(i+1),'页码响应状态码:',r.status_code)soup=BeautifulSoup(r.text,'lxml')    #使用BeautifulSoup模块对抓取到的网页内容进行解析div_list=soup.find_all('div',class_='hd')    #将得到的目标电影数据所在的div存储到list中for each in div_list:movie=each.a.span.text.strip()    #获取精确的目标电影数据(即电影名字)movie_list.append(movie)return movie_list
movies=get_movies()
print(movies)

输出:

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

完成既定目标。

4)进阶拓展


爬取TOP250电影的英文名。

import requests
from bs4 import BeautifulSoup
def get_movies():headers={'user-agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 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()movie=each.a.contents[3].text.strip()movie=movie[2:]movie_list.append(movie)#print(each.a.contents[3].text.strip())return movie_list
movies=get_movies()
print(movies)

注意到更改部分为for循环中的部分。

代码中,

each.a.span只会定位到a标签下第一个span标签的内容。
each.a.contents则会定位到a标签下所有的子标签内容(包括换行符‘\n’),例如在for循环中添加一句print(each.a.contents),则输出内容为(以“肖申克的救赎一项为例展示”):
['\n', <span class="title">肖申克的救赎</span>, '\n', <span class="title"> / The Shawshank Redemption</span>, '\n', <span class="other"> / 月黑高飞(港)  /  刺激1995(台)</span>, '\n']

即包括换行符“\n”,所以若用  each.a.contents[0] 定位到的则是开头的换行符,不是我们需要的有价值的信息。

故我们需要的部分的索引应为3(英文名),当我们直接用 movie=each.a.contents[3].text.strip() 进行输出时候,则发现输出的为(以“肖申克的救赎一项为例展示”):

['/\xa0The Shawshank Redemption',

我们发现在英文名前面有一个“/”(这个是网页页面文本中本来就有的),还有一个“\xa0”,这个代表不间断空白符 &nbsp;

注意:若遇到“\u3000”,则表示全角的空白符。

参考博客:https://www.cnblogs.com/BlackStorm/p/6359005.html

故需要  movie=movie[2:]  进行截取。

修改后的代码运行结果为:

1 页码响应状态码: 200
2 页码响应状态码: 200
3 页码响应状态码: 200
4 页码响应状态码: 200
5 页码响应状态码: 200
6 页码响应状态码: 200
7 页码响应状态码: 200
8 页码响应状态码: 200
9 页码响应状态码: 200
10 页码响应状态码: 200
['The Shawshank Redemption', '再见,我的妾  /  Farewell My Concubine', 'Léon', 'Forrest Gump', 'La vita è bella', '千と千尋の神隠し', 'Titanic', "Schindler's List", 'Inception', 'WALL·E', "La leggenda del pianista sull'oceano", '3 Idiots', "Hachi: A Dog's Tale", 'Les choristes', '西遊記大結局之仙履奇緣', 'The Truman Show', 'となりのトトロ', 'The Godfather', '도가니', 'Interstellar', 'Gone with the Wind', 'Intouchables', '無間道', 'The Pursuit of Happyness', 'Nuovo Cinema Paradiso', 'Flipped', '12 Angry Men', 'Fight Club', 'Life of Pi', 'Devils on the Doorstep', 'The Dark Knight', 'The Lord of the Rings: The Return of the King', '人生  /  Lifetimes', '天空の城ラピュタ', 'Zootopia', 'Roman Holiday', '西遊記第壹佰零壹回之月光寶盒', 'Up', 'Das Leben der Anderen', 'Lock, Stock and Two Smoking Barrels', "One Flew Over the Cuckoo's Nest", 'Witness for the Prosecution', 'Scent of a Woman', 'ハウルの動く城', 'The Cove', 'V for Vendetta', '변호인', 'Dead Poets Society', 'The Godfather: Part Ⅱ', 'A Beautiful Mind', 'The Lord of the Rings: The Two Towers', 'The Lord of the Rings: The Fellowship of the Ring', 'Love Letter', '飲食男女', 'Dangal', 'Once Upon a Time in America', 'The Lion King', 'The Pianist', "Le fabuleux destin d'Amélie Poulain", 'Se7en', '소원', '嫌われ松子の一生', 'بچههای آسمان', 'The Prestige', 'Contratiempo', 'The Sound of Music', 'Braveheart', 'Edward Scissorhands', 'The Curious Case of Benjamin Button', 'Pulp Fiction', 'Malèna', 'Saving Private Ryan', 'The Matrix', 'The Silence of the Lambs', 'おくりびと', 'The Butterfly Effect', '让子弹飞一会儿  /  火烧云', 'Mary and Max', '春光乍洩', '大闹天宫 上下集  /  The Monkey King', 'Good Will Hunting', 'In the Heat of the Sun', 'もののけ姫', 'The Last Emperor', 'The Sixth Sense', '重慶森林', 'Shutter Island', 'Big Fish', 'The Grand Budapest Hotel', 'Jagten', "Harry Potter and the Sorcerer's Stone", '射鵰英雄傳之東成西就', 'Identity', 'Comrades: Almost a Love Story', 'Brokeback Mountain', 'Yi yi  /  Yi yi: A One and a Two', '自白  /  母亲', 'Catch Me If You Can', '써니', 'Pirates of the Caribbean: The Curse of the Black Pearl', 'Cidade de Deus', 'Modern Times', 'The Boy in the Striped Pajamas', 'Avatar', 'Before Sunrise', 'Gone Girl', '風の谷のナウシカ', 'Before Sunset', '耳をすませば', '倩女幽魂(87版)  /  A Chinese Ghost Story', 'パプリカ', 'Detachment', '더 테러 라이브', '火垂るの墓', 'How to Train Your Dragon', 'The Terminal', '菊次郎の夏', 'リトル・フォレスト 夏・秋', '喜劇之王', '歲月神偷', '借りぐらしのアリエッティ', 'Despicable Me', '七人の侍', '살인의 추억', 'Océans', 'Love Actually', 'Saw', 'Slumdog Millionaire', 'The Bourne Ultimatum', '囍宴', '東邪西毒', 'Memento', 'Rain Man', 'Monsters, Inc.', 'The Croods', 'Black Swan', 'A Better Tomorrow  /  Gangland Boss', 'Legends of the Fall', 'Hotel Rwanda', 'La grande vadrouille', 'The Notebook', 'Manchester by the Sea', 'Pride & Prejudice', '7번방의 선물', 'Harry Potter and the Deathly Hallows: Part 2', 'リトル・フォレスト 冬・春', '蛍火の杜へ', 'A Perfect World', 'The Godfather: Part III', '緃横四海', 'Twenty Two  /  22', 'Waterloo Bridge', 'Trainspotting', 'Relatos salvajes', '時をかける少女', 'Toy Story 3', '花樣年華', "Singin' in the Rain", '唐伯虎點秋香', 'Big Hero 6', 'About Time', 'I Am Sam', 'The Dark Knight Rises', 'Artificial Intelligence: AI', '殡棺  /  The Coffin in the Mountain', 'Die Welle', 'Ice Age', 'Perfume: The Story of a Murderer', 'The Reader', '羅生門', 'Following', 'Whiplash', 'جدایی نادر از سیمین', 'Crash', 'Perfect Blue', 'Kekexili: Mountain Patrol', 'Call Me by Your Name', 'Lord of War', 'Hacksaw Ridge', 'Taare Zameen Par', 'Triangle', 'Requiem for a Dream', 'Dallas Buyers Club', 'Django Unchained', '阿飛正傳', '牯嶺街少年殺人事件', 'The Bourne Identity', 'The Bourne Supremacy', '魔女の宅急便', 'Le grand bleu', 'ハチ公物語', 'Psycho', 'Inside Out', 'Room', 'Begin Again', 'Green Snake', '秒速5センチメートル', "Prince Nezha's Triumph Against Dragon King  /  Nezha nao hai", '東京物語', 'The Boat That Rocked', 'Thelma & Louise', 'The Green Mile', 'Terminator 2: Judgment Day', 'Source Code', 'The Imitation Game', 'The Rock', '新龍門客棧', 'The Matrix Revolutions', 'The Man from Earth', 'Casablanca', 'En man som heter Ove', 'City Lights', 'Face/Off', 'Into the Wild', 'Le peuple migrateur', '君の名は。', 'E.T.: The Extra-Terrestrial', 'สิ่งเล็กเล็กที่เรียกว่า...รัก', 'Inglourious Basterds', 'A Clockwork Orange', 'American Beauty', 'Il buono, il brutto, il cattivo.', 'The English Patient', 'Bajrangi Bhaijaan', 'Before Midnight', 'スワロウテイル', '誰も知らない', 'The Usual Suspects', 'Front of the Class', 'Mulholland Dr.', 'Crazy Stone', 'Warrior', 'Wreck-It Ralph', "The King's Speech", '歩いても 歩いても', 'Blood Diamond', 'The Gods Must Be Crazy', 'Coherence', '鎗火', '藍色大門', 'The Life of David Gale', 'The Bucket List', '그대를 사랑합니다', 'Gattaca', 'Cast Away', '집으로...', 'Black Hawk Down', '麥兜故事', 'Eternal Sunshine of the Spotless Mind', 'Spotlight']

转载于:https://my.oschina.net/u/3367404/blog/2986279

爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250相关推荐

  1. requests爬取豆瓣前250部高分电影

    这两天又写了一个爬取豆瓣前250部高分电影的爬虫,并把电影名字和图片保存到本地. 用的是requests和BeautifulSoup. @requires_authorization import r ...

  2. 爬取豆瓣的正在热映电影

    爬取豆瓣的正在热映电影 引言 思路分析 代码 结果展示 引言 本篇文章较为基础,没有什么技术含量,主要是为了回顾一下如何用XPath提取HTML页面中的数据 思路分析 首先,进入豆瓣电影的主页,并且选 ...

  3. 爬取豆瓣评分前50的电影信息

    文章目录 项目描述 内容模块 代码区 运行测试 项目描述 根据豆瓣评分排名,获取豆瓣评分前50的电影信息.主要包括:电影名称.电影评分.评价人数和电影短评信息,并存储到本地表格文件. 内容模块 使用r ...

  4. python爬取豆瓣排名前250部电影封面

    话不多说,先给出网页地址豆瓣电影 Top 250,进入后我们按F12打开开发者工具查看网页信息,然后随便右键点击一张电影封面查看元素如图: 容易看出我们所需要的封面地址在img这个标签下的src属性当 ...

  5. Python第一战:爬取豆瓣排名前250的电影

    一.需求分析   爬取豆瓣电影Top250的基本信息,包括电影的名称.豆瓣评分.评价数.电影概况.电影链接等.(https://movie.douban.com/top250) 二.爬虫的定义   网 ...

  6. 爬取豆瓣网前一百名电影

    网站爬取的流程图: 实现项目我们需要运用以下几个知识点 一.获取网页 1.找网页规律: 2.使用 for 循环语句获得网站前4页的网页链接: 3.使用 Network 选项卡查找Headers信息: ...

  7. Requests:爬取豆瓣排名前250的电影名称

    import requests from bs4 import BeautifulSoup import pandas as pd # 读取豆瓣TOP250的电影名 def get_movies(): ...

  8. 利用Scrapy爬取豆瓣排名前250部电影封面

    一.爬虫代码 项目目录结构: item.py文件 # -*- coding: utf-8 -*- import scrapyclass DoubanmovieItem(scrapy.Item):# t ...

  9. python爬取豆瓣网即将上映的电影,数据信息存储到json文件

    1,import库的安装,在我其它博文中有:获取豆瓣网即将上映的网页信息即HTML页面. 2,解析获取到的网页的数据信息 3将获取到的数据信息,放到json文件 4,主程序

  10. Python3爬取豆瓣图书Top250并写入txt文件当中

    首先简单介绍一下过程 1.解析url 2.获得html文件 3.解析数据 4.写入txt文本(按页写入) 5.上传代码 转载前可以备注一下ytouch的名字 '''爬取豆瓣图书前250名''' #au ...

最新文章

  1. win 8升级win8.1的几个问题
  2. 校讯通近期爆发短信诈骗:取消不可能 那如何规范
  3. @EnableDiscoveryClient
  4. 程序员大佬的简历和普通程序员有啥区别?
  5. 【树莓派学习笔记】六、启用摄像头、实时视频、录像和截图
  6. mybatis中#{}和${}传参的区别
  7. linux 生成2g文件吗,linux 32位系统 c++写大于2G文件
  8. cisco 的网络地址转换技术(NAT)
  9. keepalived漂移VIP故障
  10. 【洛谷P1314】聪明的质检员(二分+前缀和+差分)
  11. 树莓派安装wps2019教程
  12. 2020上半年DeFi行业研究报告-Part2 发行 | TokenInsight
  13. your system does not seem to be set up to build kernel modules
  14. 759页14万字智慧大楼弱电智能化规划设计方案
  15. 蓝桥杯试题 基础练习 数列排序
  16. ubuntu16.04 vncserver gnome 不能正常显示系统界面和鼠标图标。
  17. 【毕业设计之微信小程序系列】基于APP的微信点餐小程序的设计与实现
  18. 高级Java工程师要求
  19. hadoop fs 与hdfs dfs命令区别
  20. Matlab扫频法求系统传递函数

热门文章

  1. 老男孩Python全栈学习 S9 日常作业 006
  2. 微信小程序中使用的函数
  3. word插件php,php使用phpword插件生成word文档
  4. 济南吴家堡黄河大米 国稻种芯-中国水稻节:山东稻出振兴路
  5. 【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分
  6. python之07-KeyWords关键字
  7. 洛奇今天突然与服务器连接中断,《洛奇Mabinogi》官方网站
  8. ThinkPadX390-Hackintosh-完美EFI——开启CSDN博客创作之路
  9. 用python写一个抢票脚本
  10. MMGG聚焦 |“奇迹”Azuki为何爆火