大家好,祝大家一天好心情......
本次python实战,主要目标是利用python爬取豆瓣电影 Top 250信息,如上图所示。这些信息主要包括排名、片名、评分、上映时间、主演等信息。爬取的网址url是https://movie.douban.com/top250,爬取后的结果会保存在csv文件里面。
01
如何准备爬虫环境?
其实不难
环境:MAC + Python3.6 ; IDE: Pycharm. 具体使用的模块如下。
import requests
import re
import json
但是如果你的系统上安装了anaconda,模块requests已经安装完成,但是 pycharm不能识别。
此时,只需要使用preferences直接进行安装,入下图所示,点击+,直接安装即可。
02
爬虫分析真的很重要
准备工作
我们的目标是爬取豆瓣电影 Top 250,打开网页发现共10个页面。
也就是说我们需要解析10个页面,使用一个for循环来实现。
当点击第二页时发现,网址也发生了变化,比之前多了参数start=25,
具体的网址是 https://movie.douban.com/top250?start=25&filter=,显示的电影排名是从26到50,如图所示
根据以上分析,我们可以使用star作为循环计数器。
如果显示的是star是n,则显示的电影排名是n+1~n+25,每页显示25个。
具体代码实现如下:
if __name__ == '__main__':
#循环10次
for i in range(10):
main(start= i* 25)
03
如何爬取某一个页面?
开始爬数据
对于每一个页面的爬取,我们使用的requests库。
Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作。(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库。
默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装或者使用pycharm软件安装(如上文所示).
直接使用库requests中的get方法对目标网址发出申请。为了防止请求的页面没有成功,我们添加了捕获异常的代码块try,except。
另外,如果多次爬取同一个网址,您的ip可能被封,不能在爬取任何信息。
为了解决此问题,本次在代码中设置了代理信息,具体代码请关注人工智能与大数据生活(data_circle),回复 ”豆瓣电影“ 获得全部代码。
04
开始真正的页面解析
这很重要
当爬取到想要的信息以后,就可以对其解析,然后提取想要的信息。
常见的方法有很多,比如正则表达式、xpath解析等。本文是使用正则表达式进行解析。
使用google浏览器,右键选择检查,查看需要爬取的网址源代码,具体如下。
从图可得知,每一部电影的源代码是一个节点
然后,我们用正则表达式提取排名。
首先 使用
按照此方法,我们以此提取网页中的影片名称,比如《霸王别姬》、评分信息等,代码如下:
最后的结果如下:
05
如何保存爬取的信息?
最后一步
解析后的结果,我们使用write函数写入csv文件中,代码如下:
本次实战中,我们通过爬取豆瓣电影 Top 250,了解了requests和正则表达式的用法。