以前学过一些Scrapy用来爬取新闻,不过总是爬不到数据就弃坑了。现在大三了,对招聘信息比较感兴趣,就打算爬一些数据。此次主要爬取一页的招聘信息,写爬虫没有碰到任何反爬虫的措施,还是比较顺利的。

先创建python虚拟环境 并安装scrapy

 virtualenv   job
source job/bin/activate
pip3 install scrapy 

创建scrapy项目

scrapy startproject 

在浏览器中定位所需要的信息,我一般打开chrome的控制台,复制相应数据的xpath路径

我需要的数据为

'/html/body/div[3]/div[3]/div[1]/span/text()'#专业
'/html/body/div[3]/div[3]/div[2]/div[1]/div[1]/div[1]/text()'#描述
'/html/body/div[3]/div[3]/div[1]/div[4]/text()'#要求
'/html/body/div[3]/div[4]/div[1]/div/div[1]/div[1]/a/text()'#公司名称
'/html/body/div[3]/div[3]/div[2]/div[2]/div[1]/div/div/div/p/text()'#公司描述
'/html/body/div[3]/div[4]/div[1]/div/p[2]/text()'#公司规模
'/html/body/div[3]/div[4]/div[1]/div/p[1]/a/text()'#公司类别

定义job爬虫的数据结构

		class JobItem(scrapy.Item):
		    # define the fields for your item here like:
		     profession = scrapy.Field()#职业
		     description=scrapy.Field()#职位描述
		     requirement=scrapy.Field()#要求
		     companyName=scrapy.Field()#公司名称
		     companyDescription=scrapy.Field()#公司简介
		     scale=scrapy.Field()#规模
		     companyCategory=scrapy.Field()#公司类别

最后用scrapy解析链接获取数据并存储

		import scrapy
		from job.items import JobItem
		
		
		class JobSpider(scrapy.Spider):
		    name='jobspider'
		    start_urls=['http://nc.58.com/job/?param7503=1&from=yjz2_zhaopin&PGTID=0d202408-0029-dc1e-83ae-42677992cbaa&ClickID=1']
		    #爬取导航页的链接
		    def parse(self,response):
		        #爬取链接
		        urls=response.xpath('//*[@id="jingzhun"]/a/@href').extract()
		        for url in urls:
		            yield scrapy.Request(url=url,callback=self.parse_page)
		    #爬取详细信息
		    def parse_page(self,response):
		        item=JobItem()
		        profession = response.xpath('/html/body/div[3]/div[3]/div[1]/span/text()').extract()
		        description=response.xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[1]/div[1]/text()').extract()
		        requirement=response.xpath('/html/body/div[3]/div[3]/div[1]/div[4]/text()').extract()
		        companyName=response.xpath('/html/body/div[3]/div[4]/div[1]/div/div[1]/div[1]/a/text()').extract()
		        companyDescription=response.xpath('/html/body/div[3]/div[3]/div[2]/div[2]/div[1]/div/div/div/p/text()').extract()
		        scale=response.xpath('/html/body/div[3]/div[4]/div[1]/div/p[2]/text()').extract()
		        companyCategory=response.xpath('/html/body/div[3]/div[4]/div[1]/div/p[1]/a/text()').extract()
		        item['profession']=profession
		        item['description']=description
		        item['requirement']=requirement
		        item['companyName']=companyName
		        item['companyDescription']=companyDescription
		        item['scale']=scale
		        item['companyCategory']=companyCategory
		        yield item

基本上就完成了此次的爬虫