scrapy 爬电影 抓取数据

前段时间学python学完了基础的知识当然是要来点实际的东西玩玩了。爬虫,这个对于python再适合不过,今天就先来爬一个电影网站,下一篇我们来爬美女图片,这篇就做为一个爬虫基础练练手。将他有的资源信息爬下来保存成一个csv文件。

环境 mac python3.6.1 pycharm

Step1

默认scrapy的环境是安装好的。我们在终端里输入scrapy startproject 工程名新建一个爬虫项目,scrapy会为我们初始化一个基本结构如下图:

image.png

其中Id97Index.py是我们编写逻辑的文件,也是我们自己建的。除此之外都会在新建项目时生成。

Step2

在items.py中创建我们的实体类:


image.png

分别为“封面”、“电影名”、“评分”、“类型”
该实体类会在后面提交数据时scrapy进行写入需要用到的,总之呢。你需要存什么数据就写对应字段,后面保存文件后你就明白了

Step3

现在可以开始写我们爬虫的逻辑了
如Step1我们在spiders文件夹下新建一个Index97Index.py再新建类Id97Movie继承CrawlSpider如下:

image.png

其中name为我们启动项目的名字
host主要为后面做一些拼接
allowed_domains主域名
start_urls需要请求爬的初始urls

image.png
image.png

从源码可以看到namestart_urls是必要的参数,并且一开始的请求是循环start_urls,所以一定不能忘记,名字也不能定义。

Step4

覆写parse方法

image.png

image.png
  • 根据chrome中查看到每个item内容都在红框中这个标签内,我们可以右键选择copy xpath(xpath知识可以google两分钟就会)进行xpath选取
  • 获取下一页url,同样找到下一页的xpath。这里我是把最下面的"上一页,下一页 页码"都拿来。因为下一页这个标签总在倒数第二个就可以使用pages[-2]获取下一页的url
  • for循环处理每个列表列的内容使用parse_item方法处理
  • 最后yield Request(nextPageUrl, callback=self.parse)再次请求下一页的内容,依然使用parse方法处理这样循环直到最后一页
    parse_item代码:
    image.png

Step5

设置settings.py我们需要一个存放路径及格式

image.png

Step6

到该项目的目录下在终端执行scrapy crawl name(step3中所说的name='id97'),也可将命令直接放在python文件中进行执行

image.png

至此这个爬虫就基本结束了。settings.py中还有一些优化配置网上还是比较多的。可以自行配置试试看
源代码:https://github.com/EasonHolmes/Spider_Movie

你可能感兴趣的:(scrapy 爬电影 抓取数据)