如今咱們寫一個爬取某招聘網站上北京開發崗位招聘信息的爬蟲程序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內