网站首页 > 基础教程 正文
本文介绍用Python抓取豆瓣电影TOP250的所有电影的名称,网页地址为: https://movie.douban.com/top250 。在此爬虫中,将请求头定制为实际浏览器的请求头。
为有利提供学习资料,请告知您的Python程度:
抓数据源分析
打开豆瓣电影TOP250的网站,使用“检查”功能查看该网页的请求头,如图3-4所示。
按照3.3.2中的方法提取其中重要的请求头:
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' }
第一页只有25个电影,如果要获取所有的250页电影,就需要获取总共10页的内容。
通过单击第二页可以发现网页地址变成了:
https://movie.douban.com/top250?start=25
第三页的地址为: https://movie.douban.com/top250?start=50 ,这就很容易理解了,每多一页,就给网页地址的start参数加上25。
项目实践
通过以上分析发现,可以使用requests获取电影网页的代码,并利用for循环翻页。其代码如下:
import requests 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' } 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) print (r.text) get_movies()
运行上述代码,得到的结果是:
1页响应状态码:200
<!DOCTYPE html>
<html lang="zh-cmn-Hans"class="ua-windows ua-webkit">
<head>
<meta http-equiv="Content-Type"content="text/html;charset=UTF-8">
<meta name="renderer"content="webkit">
<meta name="referrer"content="always">
<title>
豆瓣电影TOP250
...
这时,得到的结果只是网页的HTML代码,我们需要从中提取需要的电影名称。接下来会涉及第5章解析网页的内容,读者可以先使用下面的代码,至于对代码的理解,可以等到第5章再学习。
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() movie_list.append(movie) return movie_list movies = get_movies() print (movies)
在上述代码中,使用BeautifulSoup对网页进行解析并获取其中的电影名称数据。运行代码,得到的结果是:
['肖申克的救赎','这个杀手不太冷','霸王别姬','阿甘正传','美丽人生','千与千寻','辛德勒的名单','泰坦尼克号','盗梦空间','机器人总动员','海上钢琴师','三傻大闹宝莱坞','忠犬八公的故事','放牛班的春天','大话西游之大圣娶亲','教父','龙猫','楚门的世界','乱世佳人','天堂电影院','当幸福来敲门','触不可及','搏击俱乐部','十二怒汉','无间道','熔炉','指环王3:王者无敌','怦然心动','天空之城','罗马假日',...]
课后作业
读者若有时间,可以实践进阶问题:获取TOP 250电影的英文名、港台名、导演、主演、上映年份、电影分类以及评分。
还想获取更多的爬虫知识吗?点击这里:
- 上一篇: 面向前端工程师的设计模式-原型模式
- 下一篇: 如何实现公司各个系统之间的账号互通和SSO统一登陆
猜你喜欢
- 2024-11-25 网站复制粘贴收费怎么办
- 2024-11-25 SEO前端meta标示优化
- 2024-11-25 给web页面添加甘特图,只需三条命令!
- 2024-11-25 初识meta标签与SEO——零基础自学网页制作
- 2024-11-25 彻底禁止查看网页源代码及破解
- 2024-11-25 国产化操作系统浏览器自定义协议
- 2024-11-25 Electron 进程间通信的四种方式
- 2024-11-25 PHP页面跳转
- 2024-11-25 如何实现公司各个系统之间的账号互通和SSO统一登陆
- 2024-11-25 面向前端工程师的设计模式-原型模式
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)