以前学过一些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
基本上就完成了此次的爬虫