Scrapy第一战—爬取智联招聘

本文介绍如何使用Scrapy爬虫框架抓取智联招聘信息,并详细讲解了安装配置、项目创建、字段定义、爬虫编写及数据存储等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scrapy是专业级T_T爬虫框架,在研究爬虫领域颇负盛名,是当今世界最流行的爬虫框架,没有之一。不过如此强大的爬虫框架,学习成本却比较高,作为一个新手,我对此感同身受,希望我的学习心得,避免大家入坑。
装逼

## 安装Scrapy 打开命令行,输入 : `pip install scrapy `

就是这么简单,安装完成。

项目

### 创建项目 通过命令行进入你要放置项目的文件,输入: ` scrapy startproject XXXXX XXXXX代表你项目的名字 ` ![scrapy](http://ov4gdtmdv.bkt.clouddn.com/QQ%E6%88%AA%E5%9B%BE20170824203618.png) 输入`scrapy genspider zl www.zhaopin.com`就会生成一个爬虫
![zl](http://ov4gdtmdv.bkt.clouddn.com/QQ%E6%88%AA%E5%9B%BE20170824205631.png)

定义字段

打开item.py,定义一些字段,这些字段可以临时存储数据,以方便后面^.^把数据保存到本地文件、数据库和其他地方。

废话不多说,上代码:

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy


class ZhilianItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()#职位名称
    rate = scrapy.Field()#反馈率
    compy = scrapy.Field()#公司
    money = scrapy.Field()#月薪
    place = scrapy.Field()#工作地点
字段通过`scrapy.Field()`定义,很简单吧��。
![机制](http://ov4gdtmdv.bkt.clouddn.com/u=3268135649,579575506&fm=26&gp=0.jpg)

编写spider

这是爬虫的核心部分,是不是很紧张,很刺激��。不要怕其实一点都不难(这是小白教程),不多说先看代码,没有代码讲了也会一脸懵逼:

# -*- coding: utf-8 -*-

import scrapy
import re
from bs4 import BeautifulSoup
from scrapy.http import Request
from zhilian.items import ZhilianItem

class ZlSpider(scrapy.Spider):
    name = 'zl'
    allowed_domains = ['sou.zhaopin.com']
    first_url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=全国&sm=0&p='
    last_url = '&sg=d5859246414f499ba3fa6c723a9749f5'
    def start_requests(self):
        for i in range(1,91):
            url = self.first_url + str(i) + self.last_url
            yield Request(url,self.parse)

    def parse(self, response):
        soup = BeautifulSoup(response.body.decode('utf-8'),'lxml')
        for site in soup.find_all('table',class_='newlist'):
            item = ZhilianItem()
            try:
                item['name'] = site.find('td',class_='zwmc').get_text().strip()
                #print(item['name'])
                item['rate'] = site.find('td',class_='fk_lv').get_text()
                #print(item['rate'])
                item['compy'] = site.find('td',class_='gsmc').get_text()
                #print(item['compy'])
                item['money'] = site.find('td',class_='zwyx').get_text()
                #print(item['money'])
                item['place'] = site.find('td',class_='gzdd').get_text()
                #print(item['place'])
                #print(item)
                yield item
            except:
                pass
前面几行都是调用一些包和模块,`re`和`bs4`就不多说了��,`request`是一个单独的request的模块,需要跟进URL的时候,需要用它。`ZhilianItem`是导入的items的`ZhilianItem`类。 我们要遍历所有的职位页面。
![智联](http://ov4gdtmdv.bkt.clouddn.com/QQ%E6%88%AA%E5%9B%BE20170824211210.png)

对于这些链接,有些人会选择直接把链接贴到start_urls但是这太蹩脚了(如果你执意这么做也要考虑编程量),看我的方法优雅方便多了吧��。
先赋值了几个变量,定义start_requests通过requuest生成response,调用parse函数对每个响应进行处理。
使用BeautifulSoup进行解析,提取元素,将我们导入的item文件进行实例化,用来存储我们的数据,将需要的数据,复制给item[key] (注意这儿的Key就是我们前面在item文件中定义的那些字段。)(懒癌犯了,写的简单点了��)

存储数据

打开pipelines文件,定义ZhilianPipeline类,啥也不说了,再来一波代码~_~:

# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
import json
import os

class ZhilianPipeline(object):
    def open_spider(self, spider):
        path = 'D:/数据/'
        if not os.path.exists(path):
            os.makedirs(path)
        self.file = open(path + '智联招聘.jl', 'wt',encoding='UTF-8')

    def close_spider(self, spider):
        self.file.close()

    def process_item(self, item, spider):
        line = json.dumps(dict(item),ensure_ascii=False) + '\n'
        self.file.write(line)
        return item
导入`json`和`os`模块,定义`open_spider`函数(当spider运行是调用),创建一个json,定义`close_spider`函数(当spider关闭时调用),定义` process_item`函数,把`item`数据写入json中。 在转到`settings.py`输入一下代码:
ITEM_PIPELINES = {
   'zhilian.pipelines.ZhilianPipeline': 300,
}
好了,大概就这样了(不懂的可以下面评论问我+_+) ### 运行spider 输入:
scrapy crawl zl
运行爬虫,生成json数据。
![img](http://ov4gdtmdv.bkt.clouddn.com/QQ%E6%88%AA%E5%9B%BE20170824215141.png)

over^3^!!!Scrapy虽难,但是只要入门,之后自然就轻松了,加油。

Github参考:https://github.com/zhuxunyu/Scrapy-Crawl-Zhaopin-job-information

个人博客

http://www.bestblog.top/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值