初识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
使用后者数据会出现问题!!!!
数据部分展示: