Python实战 | 手把手教你爬取豆瓣电影 Top 250

640?wx_fmt=jpeg

主要目标


    

又是一个美好的周六, 祝大家一天好心情......

本次python实战,主要目标是利用python爬取豆瓣电影 Top 250信息,如上图所示。这些信息主要包括排名、片名、评分、上映时间、主演等信息。爬取的网址url是https://movie.douban.com/top250,爬取后的结果会保存在csv文件里面。


环境准备



环境:MAC + Python3.6 ;  IDE: Pycharm. 具体使用的模块如下。


import requests
import re
import json

但是如果你的系统上安装了anaconda,模块requests已经安装完成,但是pycharm不能识别。此时只需要使用preferences直接进行安装,入下图所示,点击+,直接安装即可。


640?wx_fmt=png


爬取分析


我们的目标是爬取豆瓣电影 Top 250,打开网页发现共10个页面。也就是说我们需要解析10个页面,使用一个for循环来实现。当点击第二页时发现,网址也发生了变化,比之前多了参数start=25,具体的网址是  https://movie.douban.com/top250?start=25&filter=,显示的电影排名是从26到50,如图所示


640?wx_fmt=png

根据以上分析,我们可以使用star作为循环计数器。如果显示的是star是n,则显示的电影排名是n+1~n+25,每页显示25个。具体代码实现如下


if __name__ == '__main__':
    #循环10次
    for i in range(10):
        main(start= i* 25)


爬取页面


对于每一个页面的爬取,我们使用的requests库。Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作。(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库。默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装或者使用pycharm软件安装(如上文所示).

直接使用库requests中的get方法对目标网址发出申请。为了防止请求的页面没有成功,我们添加了捕获异常的代码块try,except。另外,如果多次爬取同一个网址,您的ip可能被封,不能在爬取任何信息。为了解决此问题,本次在代码中设置了代理信息,具体代码请扫描二维码获取

 
 


页面解析


当爬取到想要的信息以后,就可以对其解析,然后提取想要的信息。常见的方法有很多,比如正则表达式、xpath解析等。本文是使用正则表达式进行解析。

使用google浏览器,右键选择检查,查看需要爬取的网址源代码,具体如下。从图可得知,每一部电影的源代码是一个节点<li>节点,里面包含了所有的信息。比如在之后有一个子节点em里面包含了排名信息26. 


640?wx_fmt=png


然后,我们用正则表达式提取排名。首先 使用<li>定位到包含电影信息的节点,然后使用通配符找到em节点,在使用非贪婪匹配来提取包括排名的信息,26.具体代码如下。

按照此方法,我们以此提取网页中的影片名称,比如《霸王别姬》、评分信息等,代码如下:。具体代码请扫描二维码获取

 
 


最后的结果如下:

640?wx_fmt=png

保存文件


 

解析后的结果,我们使用write函数写入csv文件中,代码如下。

本次实战中,我们通过爬取豆瓣电影 Top 250,了解了requests和正则表达式的用法。

640?

什么是Python实战圈?

已有1400人加入

提供清晰的多角度学习路径、快速学习运用python的圈子

圈主是世界500强高级软件工程师,多年编码经验。

具体可以提供以下内容:

【基础】0基础入门python,24小时有人快速解答问题;

【提高】40多个项目实战,老手可以从真实场景中学习python;

【直播】不定期直播项目案例讲解,手把手教你如何分析项目;

【分享】优质python学习资料分享,让你在最短时间获得有价值的学习资源;圈友优质资料或学习分享,会不时给予赞赏支持,希望每个优质圈友既能赚回加入费用,也能快速成长,并享受分享与帮助他人的乐趣。

【人脉】收获一群志同道合的朋友,并且都是python从业者

【价格】本着布道思想,只需 69元 加入一个能保证学习效果的良心圈子

长按下图二维码,了解python实战圈详情。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值