利用Scrapy框架对豆瓣电影排行榜相关数据进行爬取
从上一节中我们知道了scrapy框架和shell指令的测试功能,以及scrapy项目的文件构成。今天利用框架写一个简单的爬虫,将豆瓣电影上的排名、电影名、评分和评价人数获取下来,并保存在表格文件中。
一、Items的编写
使用Scrapy中的Item对象可以保存爬到的数据,相当于存储爬取到的数据的容器。一般来说,网页中的信息基本上都是非结构化信息,我们需要从中提取出我们关注的结构化信息,这样更利于我们对数据的管理,此时,我们可以将提取到的结构化数据存储到Item对象中。
在要爬取的目标网页中,我们需要知道四个参数,分别是排名、名称、评分和评论人数,那么在items.py文件中,就需要对结构化信息进行定义,定义结构化数据信息的格式如下:
结构化数据名 = scrapy.Field()
所以,可以将默认的items.py文件修改如下:
class TestdemoItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
movie_rank = scrapy.Field()
movie_name = scrapy.Field()
movie_score = scrapy.Field()
movie_comment = scrapy.Field()
t = TestdemoItem(movie_rank="1",movie_name="肖申克的救赎",movie_score="9.4",movie_comment="10000")
print(t)
我们定义了一系列结构化数据:movie_rank、movie_name、movie_score和movie_comment。在存储具体数据的时候,只需要实例化该类即可,比如上面第8行代码就将该类实例化的对象赋值给了t,然后输出了这个对象,如下所示:
可以发现,对应的数据会以字典的形式存储,原数据项名会转变为字典中的字段名,原数据项对