初识scrapy框架(一)

创建一个scrapy项目:

  scrapy startproject '项目名'  比如新建一个名为dan_scrapy的项目

  在项目里会自动生成一些文件:

  

  在项目dan_scrapy下有一个配置文件:scrapy.cfg ;还有一个文件夹:dan_scrapy。子文件夹下面有4个py文件和一个

spiders文件夹。

   下面来简单介绍一下各个主要文件的作用:

  scrapy.cfg :项目的配置文件

  dan_scrapy/ :项目的Python模块,将会从这里引用代码

  dan_scrapy/items.py :项目的目标文件

  dan_scrapy/pipelines.py :项目的管道文件

  dan_scrapy/settings.py :项目的设置文件

  dan_scrapy/spiders/ :存储爬虫代码目录

明确将要爬取的目标:

  修改 ‘dan_scrapy/items.py :项目的目标文件’,这里我们的目标是爬取某网页的课程名和学费价格。

  

创建爬虫文件:

  命令:scrapy genspider 'spider_name' 'url'

  

  此时,在项目的spiders里面就创建了一个爬虫文件tenxun_spider。文件里默认配置了一些参数:

  

 项目准备的案例:

  

 爬取数据:

  以腾讯课堂为例,爬取他们的课程名和学费:

  爬虫文件如下:

 1 import scrapy
 2 from dan_spider.items import DanSpiderItem
 3 
 4 class TencentSpider(scrapy.Spider):
 5     name = 'Tencent'
 6     allowed_domains = ['ke.qq.com']
 7     start_urls = ['https://ke.qq.com/course/list?']
 8     base_url = 'https://ke.qq.com'
 9 
10     def parse(self, response):
11         item = DanSpiderItem()
12         node_list = response.xpath('//div[@class="main-left"]/div[3]/ul[@class="course-card-list"]/li')
13         print('node_list:', len(node_list))
14         next_page = response.xpath('//a[@class="page-next-btn icon-font i-v-right"]/@href').extract_first()
15         for node in node_list:
16             item['title'] = node.xpath('./h4/a/@title').extract_first()
17             item['money'] = node.xpath('./div[3]/span/text()').extract_first()
18             yield item
19         yield scrapy.Request(url=self.base_url + next_page, callback=self.parse)

  这里爬虫开始的页面是:'https://ke.qq.com/course/list?'

  爬取下一页是通过匹配下一页按钮的链接。

在终端里输入执行爬虫文件的命令:

  scrapy crawl '爬虫文件名'      这里一定不要使用 scrapy crawl '爬虫文件名' -o tencent.json

  使用后者数据会出现问题!!!!

数据部分展示:

   

 

posted @ 2018-05-08 22:48  巴蜀秀才  阅读(133)  评论(0编辑  收藏  举报