学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺。

本文通过爬取豆瓣top250电影学习python requests的使用。

1、准备工作

在pycharm中安装request库



请看上图,在pycharm中依次点击:File->Settings。然后会弹出下图的界面:

点击2中左上角的“+”按钮,弹出下图的界面:

在右上角的查询框输入requests,然后点击“Install Package”按钮安装requests插件。

2、目标

抓取每部电影的名字、主演、评分、图片等信息, 并保存在txt文本文件中。

3、分析豆瓣top250电影首页

1、分析豆瓣电影top250的网页https://movie.douban.com/top250,在浏览器中打开该网页:

可以看到一页显示25部电影。250部电影分10显示:

要抓取250部电影需要抓取10次。下面是每一页的网页链接:

  1. https://movie.douban.com/top250?start=0&filter= 首页,等效于https://movie.douban.com/top250
  2. https://movie.douban.com/top250?start=25&filter= #第2页
  3. https://movie.douban.com/top250?start=50&filter= #第3页
  4. ...
  5. ...
  6. ...
  7. https://movie.douban.com/top250?start=225&filter= #第10页

通过分析上面的链接可以得出一个规律:start=0显示1到25部电影,start=25显示26到50部电影,以此类推,在抓取每一页的电影时,是需要改变start的值即可。

4、抓取豆瓣电影top250首页

代码如下:

  1. import requests
  2. import re
  3. import json
  4. headers = {
  5. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"}
  6. url = 'https://movie.douban.com/top250?start=0&filter='
  7. proxies = {
  8. "http": "http://123.207.96.189:80"
  9. }
  10. response = requests.get(url, proxies = proxies,headers=headers)
  11. text = response.text
  12. print(text)

通过上述的代码我们可以学习到requests类库中如何使用headers信息和设置代理。

headers头信息和proxies代理信息都是定义为dict词典变量,然后在调用requests.get()方法时传输这个两个参数:

  1. response = requests.get(url, proxies = proxies,headers=headers)

很多网站都有反爬虫的措施,对于没有headers头信息的请求一律认为是爬虫,禁止该请求的访问。因此在每次爬取网页时都需要加上headers头信息。

对于访问过于频繁的请求,客户端的IP会被禁止访问,因此设置代理可以将请求伪装成来自不同的IP,前提是要保证代理的IP地址是有效的。

5、抓取每一部电影的信息

查看网页源代码有两种方式:

通过鼠标右键点击查看“查看源文件”选项,或者通过浏览器的开发者工具选项,然后点击Network查看源码:

下图是一部电影在HTML网页中的显示,我们要做的就是从HTML中提取出电影名称、主演、图片等信息。

提取电影的信息需要用到正则表达式。

通过上图可以看到一部电影的信息对应的源代码是<div class="item">节点,红色框所示。我们先用正则表达式提取到每部电影的所有信息:

regix = '<div class="item">'

class为pic的div节点包含电影的排名和电影图片信息,提取电影排名和电影图片信息的正则表:

  1. regix = '<div class="item">.*?<div class="pic">.*?<em class="">(.*?)</em>.*?<img.*?src="(.*?)" class="">'

class为info的div标签中包含了电影的名字、导演和演员等信息,电影名字是在class为hd的div的节点内,<span class="title">节点内包含的是电影的名字,<span class="other">节点内包含的是电影的别名,上图中的褐色框部分,因此提取电影名字的正则表达式为:

  1. regix = '<div class="item">.*?<div class="pic">.*?<em class="">(.*?)</em>.*?<img.*?src="(.*?)" class="">.*?div
  2. class="info.*?class="hd".*?class="title">(.*?)</span>.*?class="other">(.*?)</span>'

class为bd的节点内包含的是电影的导演和主演信息,其中class为“”的p节点内包含的是电影的导演和演员信息,其中还包含了<br>标签,上图中的紫色框部分,为了提取电影导演和演员的信息,正则表达式改写为:

  1. regix = '<div class="item">.*?<div class="pic">.*?<em class="">(.*?)</em>.*?<img.*?src="(.*?)" class="">.*?div
  2. class="info.*?class="hd".*?class="title">(.*?)</span>.*?class="other">(.*?)</span>.*?<div class="bd">.*?<p class="">(.*?)<br>(.*?)</p>'

class为start的div标签中包含的是电影的星级和评分,上图黑色框部分。提取星级和评分的规则和提取电影排名、图片等信息类似,最后提取整个电影信息的正则表达式为:

  1. regix = '<div class="item">.*?<div class="pic">.*?<em class="">(.*?)</em>.*?<img.*?src="(.*?)" class="">.*?div class="info.*?class="hd".*?class="title">(.*?)</span>.*?class="other">(.*?)</span>.*?<div class="bd">.*?<p class="">(.*?)<br>(.*?)</p>.*?class="star.*?<span class="(.*?)"></span>.*?span class="rating_num".*?average">(.*?)</span>'

提取一页中所有电影信息的代码如下:

  1. import requests
  2. import re
  3. import json
  4. headers = {
  5. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"}
  6. url = 'https://movie.douban.com/top250?start=0&filter='
  7. proxies = {
  8. "http": "http://123.207.96.189:80"
  9. }
  10. response = requests.get(url, proxies = proxies,headers=headers)
  11. text = response.text
  12. regix = '<div class="item">.*?<div class="pic">.*?<em class="">(.*?)</em>.*?<img.*?src="(.*?)" class="">.*?div class="info.*?class="hd".*?class="title">(.*?)</span>.*?class="other">(.*?)</span>.*?<div class="bd">.*?<p class="">(.*?)<br>(.*?)</p>.*?class="star.*?<span class="(.*?)"></span>.*?span class="rating_num".*?average">(.*?)</span>'
  13. results = re.findall(regix,text,re.S)
  14. for item in results:
  15. print(item)

结果为:

  1. ('1', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg', '肖申克的救赎', '&nbsp;/&nbsp;月黑高飞(港) / 刺激1995(台)', '\n 导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...', '\n 1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;犯罪 剧情\n ', 'rating5-t', '9.6')
  2. ('2', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.jpg', '霸王别姬', '&nbsp;/&nbsp;再见,我的妾 / Farewell My Concubine', '\n 导演: 陈凯歌 Kaige Chen&nbsp;&nbsp;&nbsp;主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha...', '\n 1993&nbsp;/&nbsp;中国大陆 香港&nbsp;/&nbsp;剧情 爱情 同性\n ', 'rating5-t', '9.6')
  3. ('3', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p511118051.jpg', '这个杀手不太冷', '&nbsp;/&nbsp;杀手莱昂 / 终极追杀令(台)', '\n 导演: 吕克·贝松 Luc Besson&nbsp;&nbsp;&nbsp;主演: 让·雷诺 Jean Reno / 娜塔莉·波特曼 ...', '\n 1994&nbsp;/&nbsp;法国&nbsp;/&nbsp;剧情 动作 犯罪\n ', 'rating45-t', '9.4')
  4. ('4', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p510876377.jpg', '阿甘正传', '&nbsp;/&nbsp;福雷斯特·冈普', '\n 导演: Robert Zemeckis&nbsp;&nbsp;&nbsp;主演: Tom Hanks / Robin Wright Penn / Gary Sinise', '\n 1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 爱情\n ', 'rating45-t', '9.4')
  5. ('5', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p510861873.jpg', '美丽人生', '&nbsp;/&nbsp;一个快乐的传说(港) / Life Is Beautiful', '\n 导演: 罗伯托·贝尼尼 Roberto Benigni&nbsp;&nbsp;&nbsp;主演: 罗伯托·贝尼尼 Roberto Beni...', '\n 1997&nbsp;/&nbsp;意大利&nbsp;/&nbsp;剧情 喜剧 爱情 战争\n ', 'rating5-t', '9.5')
  6. ('6', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p457760035.jpg', '泰坦尼克号', '&nbsp;/&nbsp;铁达尼号(港 / 台)', '\n 导演: 詹姆斯·卡梅隆 James Cameron&nbsp;&nbsp;&nbsp;主演: 莱昂纳多·迪卡普里奥 Leonardo...', '\n 1997&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 爱情 灾难\n ', 'rating45-t', '9.3')
  7. ('7', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1606727862.jpg', '千与千寻', '&nbsp;/&nbsp;神隐少女(台) / Spirited Away', '\n 导演: 宫崎骏 Hayao Miyazaki&nbsp;&nbsp;&nbsp;主演: 柊瑠美 Rumi Hîragi / 入野自由 Miy...', '\n 2001&nbsp;/&nbsp;日本&nbsp;/&nbsp;剧情 动画 奇幻\n ', 'rating45-t', '9.3')
  8. ('8', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p492406163.jpg', '辛德勒的名单', '&nbsp;/&nbsp;舒特拉的名单(港) / 辛德勒名单', '\n 导演: 史蒂文·斯皮尔伯格 Steven Spielberg&nbsp;&nbsp;&nbsp;主演: 连姆·尼森 Liam Neeson...', '\n 1993&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 历史 战争\n ', 'rating5-t', '9.5')
  9. ('9', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p513344864.jpg', '盗梦空间', '&nbsp;/&nbsp;潜行凶间(港) / 全面启动(台)', '\n 导演: 克里斯托弗·诺兰 Christopher Nolan&nbsp;&nbsp;&nbsp;主演: 莱昂纳多·迪卡普里奥 Le...', '\n 2010&nbsp;/&nbsp;美国 英国&nbsp;/&nbsp;剧情 科幻 悬疑 冒险\n ', 'rating45-t', '9.3')
  10. ('10', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1461851991.jpg', '机器人总动员', '&nbsp;/&nbsp;瓦力(台) / 太空奇兵·威E(港)', '\n 导演: 安德鲁·斯坦顿 Andrew Stanton&nbsp;&nbsp;&nbsp;主演: 本·贝尔特 Ben Burtt / 艾丽...', '\n 2008&nbsp;/&nbsp;美国&nbsp;/&nbsp;爱情 科幻 动画 冒险\n ', 'rating45-t', '9.3')
  11. ('11', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p524964016.jpg', '忠犬八公的故事', '&nbsp;/&nbsp;忠犬小八(台) / 秋田犬八千(港)', '\n 导演: 莱塞·霍尔斯道姆 Lasse Hallström&nbsp;&nbsp;&nbsp;主演: 理查·基尔 Richard Ger...', '\n 2009&nbsp;/&nbsp;美国 英国&nbsp;/&nbsp;剧情\n ', 'rating45-t', '9.3')
  12. ('12', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p579729551.jpg', '三傻大闹宝莱坞', '&nbsp;/&nbsp;三个傻瓜(台) / 作死不离3兄弟(港)', '\n 导演: 拉库马·希拉尼 Rajkumar Hirani&nbsp;&nbsp;&nbsp;主演: 阿米尔·汗 Aamir Khan / 卡...', '\n 2009&nbsp;/&nbsp;印度&nbsp;/&nbsp;剧情 喜剧 爱情 歌舞\n ', 'rating45-t', '9.2')
  13. ('13', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p511146807.jpg', '海上钢琴师', '&nbsp;/&nbsp;声光伴我飞(港) / 一九零零的传奇', '\n 导演: 朱塞佩·托纳多雷 Giuseppe Tornatore&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗斯 Tim Roth / ...', '\n 1998&nbsp;/&nbsp;意大利&nbsp;/&nbsp;剧情 音乐\n ', 'rating45-t', '9.2')
  14. ('14', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910824951.jpg', '放牛班的春天', '&nbsp;/&nbsp;歌声伴我心(港) / 唱诗班男孩', '\n 导演: 克里斯托夫·巴拉蒂 Christophe Barratier&nbsp;&nbsp;&nbsp;主演: 杰拉尔·朱诺 Géra...', '\n 2004&nbsp;/&nbsp;法国 瑞士 德国&nbsp;/&nbsp;剧情 音乐\n ', 'rating45-t', '9.2')
  15. ('15', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2455050536.jpg', '大话西游之大圣娶亲', '&nbsp;/&nbsp;西游记完结篇仙履奇缘 / 齐天大圣西游记', '\n 导演: 刘镇伟 Jeffrey Lau&nbsp;&nbsp;&nbsp;主演: 周星驰 Stephen Chow / 吴孟达 Man Tat Ng...', '\n 1995&nbsp;/&nbsp;香港 中国大陆&nbsp;/&nbsp;喜剧 爱情 奇幻 冒险\n ', 'rating45-t', '9.2')
  16. ('16', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p479682972.jpg', '楚门的世界', '&nbsp;/&nbsp;真人Show(港) / 真人戏', '\n 导演: 彼得·威尔 Peter Weir&nbsp;&nbsp;&nbsp;主演: 金·凯瑞 Jim Carrey / 劳拉·琳妮 Lau...', '\n 1998&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 科幻\n ', 'rating45-t', '9.2')
  17. ('17', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2190556185.jpg', '教父', '&nbsp;/&nbsp;Mario Puzo's The Godfather', '\n 导演: 弗朗西斯·福特·科波拉 Francis Ford Coppola&nbsp;&nbsp;&nbsp;主演: 马龙·白兰度 M...', '\n 1972&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 犯罪\n ', 'rating45-t', '9.2')
  18. ('18', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2539252713.jpg', '龙猫', '&nbsp;/&nbsp;邻居托托罗 / 邻家的豆豆龙', '\n 导演: 宫崎骏 Hayao Miyazaki&nbsp;&nbsp;&nbsp;主演: 日高法子 Noriko Hidaka / 坂本千夏 Ch...', '\n 1988&nbsp;/&nbsp;日本&nbsp;/&nbsp;动画 奇幻 冒险\n ', 'rating45-t', '9.1')
  19. ('19', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2206088801.jpg', '星际穿越', '&nbsp;/&nbsp;星际启示录(港) / 星际效应(台)', '\n 导演: 克里斯托弗·诺兰 Christopher Nolan&nbsp;&nbsp;&nbsp;主演: 马修·麦康纳 Matthew Mc...', '\n 2014&nbsp;/&nbsp;美国 英国 加拿大 冰岛&nbsp;/&nbsp;剧情 科幻 冒险\n ', 'rating45-t', '9.2')
  20. ('20', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1363250216.jpg', '熔炉', '&nbsp;/&nbsp;无声呐喊(港) / 漩涡', '\n 导演: 黄东赫 Dong-hyuk Hwang&nbsp;&nbsp;&nbsp;主演: 孔侑 Yoo Gong / 郑有美 Yu-mi Jeong ...', '\n 2011&nbsp;/&nbsp;韩国&nbsp;/&nbsp;剧情\n ', 'rating45-t', '9.2')
  21. ('21', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2233971046.jpg', '无间道', '&nbsp;/&nbsp;Infernal Affairs / Mou gaan dou', '\n 导演: 刘伟强 / 麦兆辉&nbsp;&nbsp;&nbsp;主演: 刘德华 / 梁朝伟 / 黄秋生', '\n 2002&nbsp;/&nbsp;香港&nbsp;/&nbsp;剧情 犯罪 悬疑\n ', 'rating45-t', '9.1')
  22. ('22', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1312700744.jpg', '当幸福来敲门', '&nbsp;/&nbsp;寻找快乐的故事(港) / 追求快乐', '\n 导演: 加布里尔·穆奇诺 Gabriele Muccino&nbsp;&nbsp;&nbsp;主演: 威尔·史密斯 Will Smith ...', '\n 2006&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 传记 家庭\n ', 'rating45-t', '9.0')
  23. ('23', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1454261925.jpg', '触不可及', '&nbsp;/&nbsp;闪亮人生(港) / 逆转人生(台)', '\n 导演: 奥利维·那卡什 Olivier Nakache / 艾力克·托兰达 Eric Toledano&nbsp;&nbsp;&nbsp;主...', '\n 2011&nbsp;/&nbsp;法国&nbsp;/&nbsp;剧情 喜剧\n ', 'rating45-t', '9.2')
  24. ('24', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p663036666.jpg', '怦然心动', '&nbsp;/&nbsp;萌动青春 / 青春萌动', '\n 导演: 罗伯·莱纳 Rob Reiner&nbsp;&nbsp;&nbsp;主演: 玛德琳·卡罗尔 Madeline Carroll / 卡...', '\n 2010&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 喜剧 爱情\n ', 'rating45-t', '9.0')
  25. ('25', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1963126880.jpg', '乱世佳人', '&nbsp;/&nbsp;飘', '\n 导演: 维克多·弗莱明 Victor Fleming / 乔治·库克 George Cukor&nbsp;&nbsp;&nbsp;主演: 费...', '\n 1939&nbsp;/&nbsp;美国&nbsp;/&nbsp;剧情 历史 爱情 战争\n ', 'rating45-t', '9.2')

从上面的结果看到电影的星级是rating5-t、rating45-t、rating4-t这样的字符代表五星、四星半、四星等。转换代码为:

  1. def star_transfor(str):
  2. if str == 'rating5-t':
  3. return '五星'
  4. elif str == 'rating45-t' :
  5. return '四星半'
  6. elif str == 'rating4-t':
  7. return '四星'
  8. elif str == 'rating35-t' :
  9. return '三星半'
  10. elif str == 'rating3-t':
  11. return '三星'
  12. elif str == 'rating25-t':
  13. return '两星半'
  14. elif str == 'rating2-t':
  15. return '两星'
  16. elif str == 'rating15-t':
  17. return '一星半'
  18. elif str == 'rating1-t':
  19. return '一星'
  20. else:
  21. return '无星'

在爬取网页时,会将图片也爬取下来,下面的代码是将每部电影的图片保存到本地:

  1. def down_image(url,headers):
  2. r = requests.get(url,headers = headers)
  3. filename = re.search('/public/(.*?)$',url,re.S).group(1)
  4. with open(filename,'wb') as f:
  5. f.write(r.content)

爬取到网页的信息后,一般会将爬取的信息保存到数据库或文本文件中,下面的代码是将爬取到的电影信息保存到文本文件中:

  1. def write_movies_file(str):
  2. with open('douban_film.txt','a',encoding='utf-8') as f:
  3. f.write(json.dumps(str,ensure_ascii=False) + '\n')

写入文本文件用到了json库的dumps方法,该方法实现了字典的序列化,并且要指定ensure_ascii参数为False,保证中文不乱码。

write_movies_file方法传入的是一个字典的参数,因此在爬取到一部电影的信息时,需要将电影信息格式化为一个字典,代码为:

  1. results = re.findall(regix, text, re.S)
  2. for item in results:
  3. yield {
  4. '电影名称' : item[2] + ' ' + re.sub('&nbsp;','',item[3]),
  5. '导演和演员' : re.sub('&nbsp;','',item[4].strip()),
  6. '评分': star_transfor(item[6].strip()) + '/' + item[7] + '分',
  7. '排名' : item[0]
  8. }

到目前为止,我们已经实现了爬取一页电影的信息,一页包含有25部电影,250部电影有10页,之前已经提到过,改变start的值即可抓取不同页的电影,下面的代码是构造10页电影url的代码:

  1. for offset in range(0, 250, 25):
  2. url = 'https://movie.douban.com/top250?start=' + str(offset) +'&filter='

爬取豆瓣电影top250的完整代码如下:

  1. import requests
  2. import re
  3. import json
  4. def parse_html(url):
  5. headers = {
  6. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"}
  7. response = requests.get(url, headers=headers)
  8. text = response.text
  9. regix = '<div class="pic">.*?<em class="">(.*?)</em>.*?<img.*?src="(.*?)" class="">.*?div class="info.*?class="hd".*?class="title">(.*?)</span>.*?class="other">' \
  10. '(.*?)</span>.*?<div class="bd">.*?<p class="">(.*?)<br>(.*?)</p>.*?class="star.*?<span class="(.*?)"></span>.*?' \
  11. 'span class="rating_num".*?average">(.*?)</span>'
  12. results = re.findall(regix, text, re.S)
  13. for item in results:
  14. down_image(item[1],headers = headers)
  15. yield {
  16. '电影名称' : item[2] + ' ' + re.sub('&nbsp;','',item[3]),
  17. '导演和演员' : re.sub('&nbsp;','',item[4].strip()),
  18. '评分': star_transfor(item[6].strip()) + '/' + item[7] + '分',
  19. '排名' : item[0]
  20. }
  21. def main():
  22. for offset in range(0, 250, 25):
  23. url = 'https://movie.douban.com/top250?start=' + str(offset) +'&filter='
  24. for item in parse_html(url):
  25. print(item)
  26. write_movies_file(item)
  27. def write_movies_file(str):
  28. with open('douban_film.txt','a',encoding='utf-8') as f:
  29. f.write(json.dumps(str,ensure_ascii=False) + '\n')
  30. def down_image(url,headers):
  31. r = requests.get(url,headers = headers)
  32. filename = re.search('/public/(.*?)$',url,re.S).group(1)
  33. with open(filename,'wb') as f:
  34. f.write(r.content)
  35. def star_transfor(str):
  36. if str == 'rating5-t':
  37. return '五星'
  38. elif str == 'rating45-t' :
  39. return '四星半'
  40. elif str == 'rating4-t':
  41. return '四星'
  42. elif str == 'rating35-t' :
  43. return '三星半'
  44. elif str == 'rating3-t':
  45. return '三星'
  46. elif str == 'rating25-t':
  47. return '两星半'
  48. elif str == 'rating2-t':
  49. return '两星'
  50. elif str == 'rating15-t':
  51. return '一星半'
  52. elif str == 'rating1-t':
  53. return '一星'
  54. else:
  55. return '无星'
  56. if __name__ == '__main__':
  57. main()

总结

使用requests爬取一个网页的基本步骤:

  • 设置头信息。
  • 设置代理
  • 使用get方法爬取网页
  • 使用正则表达式提取相应的信息
  • 下载图片
  • 将爬取到的数据保存到文本文件或数据库中。

通过本文可以学习到如何使用requests库爬取网页,使用正则表达式提取网页的信息,下载图片,保存信息到文本文件中。

一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用的更多相关文章

  1. 零基础爬虫----python爬取豆瓣电影top250的信息(转)

    今天利用xpath写了一个小爬虫,比较适合一些爬虫新手来学习.话不多说,开始今天的正题,我会利用一个案例来介绍下xpath如何对网页进行解析的,以及如何对信息进行提取的. python环境:pytho ...

  2. scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250

    scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...

  3. 第一个nodejs爬虫:爬取豆瓣电影图片

    第一个nodejs爬虫:爬取豆瓣电影图片存入本地: 首先在命令行下 npm install request cheerio express -save; 代码: var http = require( ...

  4. Python爬虫入门:爬取豆瓣电影TOP250

    一个很简单的爬虫. 从这里学习的,解释的挺好的:https://xlzd.me/2015/12/16/python-crawler-03 分享写这个代码用到了的学习的链接: BeautifulSoup ...

  5. python 爬虫&爬取豆瓣电影top250

    爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...

  6. urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250

    对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...

  7. Scrapy中用xpath/css爬取豆瓣电影Top250:解决403HTTP status code is not handled or not allowed

    好吧,我又开始折腾豆瓣电影top250了,只是想试试各种方法,看看哪一种的方法效率是最好的,一直进行到这一步才知道 scrapy的强大,尤其是和selector结合之后,速度飞起.... 下面我就采用 ...

  8. python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库

    python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...

  9. scrapy爬取豆瓣电影top250

    # -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...

随机推荐

  1. Sumdiv POJ 1845

    http://poj.org/problem?id=1845 题目 Time Limit: 1000MS   Memory Limit: 30000K Description Consider two ...

  2. nfs 权限问题

    nfs-server 上面的共享文件的权限修改后 到nfs-client 上面挂载后的权限不能刷新的问题 修改/etc/idmap.conf Domain = local.domain.edu #打开 ...

  3. mysql表加锁、全表加锁、查看加锁、解锁

    单个表锁定: 格式: LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},……] 例子: lock tables db_a.tb ...

  4. Java8学习笔记(一)--Lambda表达式

    两个概念 函数式接口 函数式接口就是只显式声明一个抽象方法的接口.为保证方法数量不多不少,java8提供了一个专用注解@FunctionalInterface,这样,当接口中声明的抽象方法多于或少于一 ...

  5. oracle 查询数据库的各种命令

    以下查询都是使用plsql查询oracle 11g 1.查询数据库版本信息 select * from v$version; 2.查询数据库优化模式 select name, value from v ...

  6. P2518 [HAOI2010]计数

    题目链接 \(Click\) \(Here\) 很好很妙的一个题目. 其实可以生成的数字,一定是原数的一个排列,因为\(0\)被放在前面就可以认为不存在了嘛~.也就是说现在求的就是全排列中所有小于该数 ...

  7. IPC$概念及入侵方式研究

    catalogue . 什么是IPC$ . IPC$攻击方式 . 漏洞检测与防御措施 1. 什么是IPC$ IPC$(空会话连接)是windows系统内置的一个功能模块,它的作用有很多(包括域帐号枚举 ...

  8. 16、爬取知乎大v张佳玮的文章“标题”、“摘要”、“链接”,并存储到本地文件

    爬取知乎大v张佳玮的文章“标题”.“摘要”.“链接”,并存储到本地文件 # 爬取知乎大v张佳玮的文章“标题”.“摘要”.“链接”,并存储到本地文件 # URL https://www.zhihu.co ...

  9. [Android] Android 锁屏实现与总结 (二)

    上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 ...

  10. 锁定表头和固定列(Fixed table head and columns)

    源码: /// <summary> /// 锁定表头和列 /// <para> sorex.cnblogs.com </para> /// </summary ...