今天要实现的就是使用是scrapy爬取豆瓣电影TOP250榜单上的电影信息。
步骤如下:
一、爬取单页信息
首先是建立一个scrapy项目,在文件夹中按住shift然后点击鼠标右键,选择在此处打开命令行窗口,输入以下代码:scrapy startproject DouBan
然后打开pycharm,再打开我们建立好的DouBan项目,我们这次的目标是爬取榜单上的电影名称,导演主演信息,评分以及一句话短评内容,所以我们在items.py中输入如下代码:
写好了items.py后,再在spiders文件夹下新建一个douban.py文件,输入以下代码:
在start_urls中包含的就是我们要爬取的网页链接,parse方法就是实现解析网页获取我们需要的内容。
由于原网页是一个很明显的表单结构,所以在这里我们选择使用xpath来解析网页,点击想要爬取的元素,右键选择Copy Xpath就可以轻松获得该元素的xpath。
利用xpath可以轻松获得一页上的信息,这些信息都存在一个列表之中,这个时候我们就需要使用前面定义的DouBanItem了,定义一个item为DouBanItem对象,然后将爬取到的每个电影的信息保存在item之中,代码如下:
二、实现翻页
这样我们就成功爬取了一页的信息,那么我们如何实现翻页呢?
观察网页可以发现点击“后页”时就会跳转到下一页,而“后页”对应的元素之中保存着下一页的部分链接信息,和“/top250”拼凑在一起就构成了下一页的链接,这样我们就可以实现翻页了。而到了最后一页,“后页”对应的元素之中就没有href这个属性了,因此需要加入一个判断来确定是否还有下一页。
实现翻页的代码如下:
三、保存数据
数据都已经爬取下来了,我们应该怎么保存呢?我这次选择把数据保存到一个csv文件中,实现方法如下:
打开settings.py文件,输入一下两行代码FEED_URI = u"file:///E://douban.csv"
FEED_FORMAT = "CSV"
四、添加main.py
由于每次运行scrapy项目都要在命令行中输入scrapy crawl 项目名称,这样会有些麻烦,那么有没有简单点的方法就能运行项目呢?
答案当然是有的,首先是在项目文件夹下新建一个main.py文件,然后在main.py里输入一下代码,再运行main.py,就能轻松运行整个scrapy项目了。
五、douban.py具体代码
六、运行结果