python爬虫 爬取网站数据

如今咱们写一个爬取某招聘网站上北京开发岗位招聘信息的爬虫程序css

爬取数据前,咱们须要建立一个scarpy框架,我我的喜欢经过Anaconda Prompt建立,简单 便捷python

Anaconda Prompt下载地址:https://www.anaconda.com/download/并发

下载界面有两个版本,选择本机python的版本下载安装就能够了。框架

步入正题,首先咱们开始经过Anaconda Prompt建立一个爬虫dom

完成以上步骤后,咱们就能够在pycharm里编写爬虫代码了scrapy

首先,用pycharm编辑器打开咱们刚刚建立的python3_zhilian(步骤:打开pycharm--点击左上角File--点击open--找到python3_zhilian点击OK,这一步须要注意的是 直接打开python3_zhilian文件夹就能够)编辑器

首先咱们详细了解一下这里面每一个目录的做用:ide

  • scrapy.cfg  项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)工具

  • items.py    设置数据存储模板,用于结构化数据,如:Django的Model网站

  • pipelines    数据处理行为,如:通常结构化的数据持久化

  • settings.py 配置文件,如:递归的层数、并发数,延迟下载等

  • spiders      爬虫目录,如:建立文件,编写爬虫规则

接下来咱们主要作的就是对蜘蛛的修改

先打开spiders下的job.py进行修改,详细内容已经写在注释里,见下图代码

接下来咱们开始写业务,业务封装的数据咱们须要保存在一个实体里

在这里,咱们只爬取职位名称、公司名称、职位月薪、工做地点和职位要求等5个字段

打开items.py,添加以下代码:

下面咱们须要建立三个管道,将数据分别保存在关系型数据MySQL内,Kafka内,还有一条管道是作分词用

打开pipelines.py,实现以下代码

要启动这三个管道,还须要在settings.py下进行配置

 

至此,系统每一个环节所须要的必须产物都已经有了,可是实现代码尚未写,因此下面咱们开始实现,从蜘蛛开始,打开job.py并实现如下代码:(详细的步骤以注释形式随代码附上)

# -*- coding: utf-8 -*-
import scrapy#导入scrapy模块

class JobSpider(scrapy.Spider):#定义类(类继承scrapy.Spider)
    name = 'job'#类的名字
    # allowed_domains = ['zhilian.com']#只容许在这个网站爬,这个域咱们没有用,直接删除便可
    start_urls = ['http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC&kw=%E5%BC%80%E5%8F%91&sm=0&p=1']#爬虫的起始网址

    def parse(self, response):#解析
        # 经过CSS选择器和xpath来解析内容
        #一、找到招聘职位连接并跟踪
        #二、找到‘下一页’的连接并跟踪
        zwmcs = response.css('td.zwmc')#得到全部的职位
        for zw in zwmcs:
            href = zw.css(' a::attr("href")').extract_first()#得到全部职位的连接
            yield response.follow(href, self.detail)#response.follow方法为了实现跟随爬取
        next_href = response.css('li.pagesDown-pos>a::attr("href")').extract_first()#得到‘下一页’的连接
        if next_href is not None:#判断若是next_href不为空,执行跟随爬取
            yield response.follow(next_href, self.parse)

    def detail(self, response):
        zwmc = response.css('div.inner-left.fl>h1::text').extract_first()
        print(zwmc)

注:代码内的.css()括号里的内容就是某招聘里HTML的class名称

接下来咱们能够运行一下试试:

一、能够在Anaconda Prompt下输入scrapy crawl python3_zhilian启动爬虫

二、第二种方法,也是我比较喜欢的一种方法,在pycharm里python3_zhilian里新建一个.py文件,名字任意起,我建立的名称为start,代码以下(注:启动蜘蛛只需点击启动start)

运行后咱们能够看到已经成功爬取到数据了

接下来咱们将其他的四个字段所有补充完整,仍是在job.py中编写代码,代码以下(详细的步骤以注释形式随代码附上)

补充完毕后,再次启动start,咱们就能够爬取到某网站招聘信息上的职位名称、公司名称、职位月薪、工做地点和职位要求

因为咱们在start.py下写了一个-o job.csv,因此当程序运行结束后,python3_zhilian目录下会自动生成job.csv文件,并将爬取到的数据存储到job.csv内

相关文章
相关标签/搜索