爬取51job的資訊

2021-08-16 00:27:22 字數 2471 閱讀 3925

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

import scrapy

from ..items import jobspideritem

class jobspider(scrapy.spider):

name = 'job'

allowed_domains = ['51job.com']

start_urls = ['',

'','']

def parse(self, response):

#解析第一頁

#第一種方法:加上以下六行**

yield scrapy.request(

url=response.url,

callback=self.parse_job_info,

meta={},

dont_filter=true

)yield scrapy.request(

url=response.url,

callback=self.parse_next_page,

meta={},

dont_filter=true

)def parse_next_page(self, response):

""":param response:

:return:

"""next_page = response.xpath("//li[@class='bk'][2]/a/@href").extract_first('')

if next_page:

yield scrapy.request(

# #response.url先解析第一頁的**

#第二種方法:把此處的url改為第一頁的**

# url=response.url,

url=next_page,

callback=self.parse_job_info,

meta={},

dont_filter=true

)#迴圈:自己呼叫自己

yield scrapy.request(

url=next_page,

callback=self.parse_next_page,

meta={},

dont_filter=true

)"""

遞迴:如果乙個函式內部自己呼叫自己,這種形式就叫做遞迴

"""def parse_job_info(self, response):

"""解析工作資訊

:param response:

:return:

"""job_div_list = response.xpath("//div[@id='resultlist']/div[@class='el']")

for job_div in job_div_list:

job_name = job_div.xpath("p/span/a/@title").extract_first(

"沒有工作名稱").replace(",", "/")

job_company_name = job_div.xpath("span[@class='t2']/a/@title").extract_first(

"沒有公司名稱").strip()

job_place = job_div.xpath("span[@class='t3']/text()").extract_first("沒有工作地點").strip()

job_salary = job_div.xpath("span["

"@class='t4']/text()").extract_first("工資面議").strip()

job_time = job_div.xpath("span[@class='t4']/text()").extract_first("沒有工作時間").strip()

job_type = "51job" if "51job.com" in response.url else "其他"

print(job_type ,job_name,job_company_name,job_place,job_salary,job_time)

"""資料清洗:負責清除資料兩端的空行,空格,特殊符號等,常用操作一般是strip()

還包括清除哪些無效資料,例如資料格式不完整的資料,以及重複資料"""

item = jobspideritem()

item['job_name'] = job_name

item['fan_kui_lv'] = "沒有反饋率"

item['job_company_name'] = job_company_name

item['job_salary'] = job_salary

item['job_place'] = job_place

item['job_type'] = job_type

item['job_time'] = "沒有時間"

yield item

爬取51job職位資訊

首先獲取一下所有城市對應的key值,找到所有城市所在的json字串,向json所在的js頁面傳送請求,獲取資訊,然後從第一頁獲取總的頁數,然後遍歷所有頁數,每到新的一頁,找到所有職位資訊的詳情頁url,遍歷詳情頁,獲取所要的職位資訊。請求並解析城市編碼函式 return 返回乙個字典 decode ...

簡易爬蟲爬取51job招聘資訊

目標 上的python相關招聘資訊 入門級別 import re import urllib.request class grab object 定義類屬性 num 0 def init self 請求的 self.url 請求頭 self.headers defopenurl self 建立請求物...

python爬蟲 爬取51job網招聘資訊

專案概覽 在搜尋頁中,所有符合條件的職位資訊以列表的形式排序設有分頁顯示。每條職位資訊是乙個url 位址,通過url 位址可以進入該職位的詳情頁。職位詳情頁也是資料爬取的頁面,爬取的資料資訊有 職位名稱 企業名稱 待遇 福利以及職位要求等等。專案框架 具體步驟 一 獲取城市編號def get cit...