本文学习Python Web编程以及利用爬虫技术爬取豆瓣电影TOP250的电影名。
必备模块介绍
urllib
urllib提供了一系列用于操作URL的功能
- urllib.request.urlopen(url,data,timeout) 发起请求获取响应页面
1 | import urllib.request |
- urllib.request.urlretrieve(url,filepath+filename) 发起请求下载文件
1 | url = 'http://www.baidu.com/img/bd_logo1.png' |
Requests
- 安装
1
2pip install requests
import requests - 发送网络请求
1
2
3
4
5
6requests.get()
requests.post(url)
requests.put(url)
requests.delete(url)
requests.head(url)
requests.options(url) - 为URL传递参数
1
2
3
4payload = {'key1':'value1','key2':'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)
#http://httpbin.org/get?key2=value2&key1=value1 - 响应内容
1
2
3r = requests.get("http://nizeyu.xyz")
print(r.text)
print(r.encoding) - 二进制响应内容
1
2r = requests.get("http://nizeyu.xyz")
print(r.content) - 定制请求头(headers中可以加入cookies,在一些爬虫场景需要登录的情况下可以使用)
1
2header = {'conten-type':'application/json'}
r = requests.get("http://nizeyu.xyz", header=headers) - 复杂的POST请求
1
2payload = {'key1':'value1','key2':'value2'}
r = requests.post("http://httpbin.org/post", data=payload) - 响应状态码(适用于目录扫描场景)
1
2r = requests.get(url)
print(r.status_code) - 响应头
1
2r = requests.get(url)
print(r.headers) - Cookies
1
2r = requests.get(url)
print(r.cookies['cookie_name']) - 超时(单位是秒)
1
r = requests.get(url, timeout=0.1)
- 错误与异常
- 遇到网络错误(DNS查询失败、拒绝连接)时,Requests会抛出一个ConnectionError异常。
- 遇到无效的HTTP响应时,Requests会抛出一个HTTPError异常。
- 遇到请求超时,Requests则会抛出Timeout异常。
爬虫
网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
用爬虫最大的好处是批量且自动化得获取和处理信息。
爬虫练习–爬取豆瓣电影TOP250
- 查看爬取网页的源码,由此构造正则表达式
- 定义get_one_page(url)函数去获取单个页面的响应内容
1 | import requests |
分析每个页面的url组成部分,定义需要爬虫的网页url的命名规律。
需要爬虫网页的URL https://movie.douban.com/top250?start=0&filter= https://movie.douban.com/top250?start=25&filter= https://movie.douban.com/top250?start=50&filter= …
1 | # 定义需要爬取的网页URl集合 |
- 设置正则表达式匹配模式去匹配获取到的字符串
1 | pattern = '<span class="title">(.*?)</span>' |
['肖申克的救赎', '霸王别姬', '阿甘正传', '这个杀手不太冷', '美丽人生', '泰坦尼克号', '千与千寻', '辛德勒的名单', '盗梦空间', '忠犬八公的故事', '海上钢琴师', '楚门的世界', '三傻大闹宝莱坞', '机器人总动员', '放牛班的春天', '星际穿越', '大话西游之大圣娶亲', '熔炉', '疯狂动物城', '无间道', '龙猫', '教父', '当幸福来敲门', '怦然心动', '触不可及', '蝙蝠侠:黑暗骑士', '控方证人', '活着', '乱世佳人', '寻梦环游记', '末代皇帝', '摔跤吧!爸爸', '指环王3:王者无敌', '少年派的奇幻漂流', '何以为家', '飞屋环游记', '十二怒汉', '鬼子来了', '天空之城', '大话西游之月光宝盒', '哈尔的移动城堡', '素媛', '天堂电影院', '罗马假日', '闻香识女人', '辩护人', '搏击俱乐部', '哈利·波特与魔法石', '我不是药神', '死亡诗社', '教父2', '狮子王', '指环王2:双塔奇兵', '窃听风暴', '大闹天宫', '指环王1:魔戒再现', '两杆大烟枪', '美丽心灵', '饮食男女', '飞越疯人院', '猫鼠游戏', '黑客帝国', 'V字仇杀队', '钢琴家', '本杰明·巴顿奇事', '看不见的客人', '让子弹飞', '西西里的美丽传说', '海豚湾', '小鞋子', '拯救大兵瑞恩', '情书', '穿条纹睡衣的男孩', '音乐之声', '美国往事', '绿皮书', '致命魔术', '海蒂和爷爷', '低俗小说', '七宗罪', '沉默的羔羊', '蝴蝶效应', '春光乍泄', '被嫌弃的松子的一生', '禁闭岛', '心灵捕手', '布达佩斯大饭店', '阿凡达', '剪刀手爱德华', '勇敢的心', '摩登时代', '天使爱美丽', '喜剧之王', '加勒比海盗', '致命ID', '断背山', '杀人回忆', '幽灵公主', '狩猎', '阳光灿烂的日子', '请以你的名字呼唤我', '入殓师', '哈利·波特与死亡圣器(下)', '重庆森林', '第六感', '小森林 夏秋篇', '7号房的礼物', '消失的爱人', '红辣椒', '爱在黎明破晓前', '小森林 冬春篇', '玛丽和马克思', '侧耳倾听', '一一', '告白', '唐伯虎点秋香', '大鱼', '蝙蝠侠:黑暗骑士崛起', '阳光姐妹淘', '倩女幽魂', '超脱', '射雕英雄传之东成西就', '甜蜜蜜', '驯龙高手', '萤火之森', '超能陆战队', '无人知晓', '幸福终点站', '菊次郎的夏天', '恐怖直播', '借东西的小人阿莉埃蒂', '爱在日落黄昏时', '神偷奶爸', '完美的世界', '怪兽电力公司', '玩具总动员3', '风之谷', '血战钢锯岭', '傲慢与偏见', '上帝之城', '功夫', '时空恋旅人', '教父3', '电锯惊魂', '喜宴', '谍影重重3', '英雄本色', '天书奇谭', '人生果实', '岁月神偷', '被解救的姜戈', '七武士', '哪吒闹海', '我是山姆', '疯狂原始人', '纵横四海', '三块广告牌', '头号玩家', '心迷宫', '萤火虫之墓', '真爱至上', '达拉斯买家俱乐部', '釜山行', '荒蛮故事', '东邪西毒', '贫民窟的百万富翁', '记忆碎片', '爆裂鼓手', '黑天鹅', '你的名字。', '花样年华', '卢旺达饭店', '忠犬八公物语', '哈利·波特与阿兹卡班的囚徒', '头脑特工队', '黑客帝国3:矩阵革命', '模仿游戏', '一个叫欧维的男人决定去死', '雨人', '你看起来好像很好吃', '无敌破坏王', '未麻的部屋', '恋恋笔记本', '冰川时代', '哈利·波特与密室', '海街日记', '新世界', '海边的曼彻斯特', '二十二', '虎口脱险', '房间', '恐怖游轮', '惊魂记', '人工智能', '雨中曲', '魔女宅急便', '奇迹男孩', '疯狂的石头', '罗生门', '海洋', '爱在午夜降临前', '终结者2:审判日', '燃情岁月', '魂断蓝桥', '小偷家族', '初恋这件小事', '穿越时空的少女', '可可西里', '绿里奇迹', '2001太空漫游', '完美陌生人', '牯岭街少年杀人事件', '无耻混蛋', '阿飞正传', '城市之光', '新龙门客栈', '源代码', '香水', '谍影重重2', '青蛇', '谍影重重', '地球上的星星', '战争之王', '猜火车', '血钻', '色,戒', '遗愿清单', '大佛普拉斯', '朗读者', '浪潮', '步履不停', '彗星来的那一夜', '疯狂的麦克斯4:狂暴之路', '小萝莉的猴神大叔', '再次出发之纽约遇见你', '聚焦', '驴得水', '东京物语', '追随', '一次别离', '我爱你', '千钧一发', '黑鹰坠落', '九品芝麻官', '四个春天', '发条橙', '网络谜踪', 'E.T. 外星人', '哈利·波特与火焰杯', '撞车']