爬取智聯招聘網的資訊 類似於51job

2021-08-16 00:27:22 字數 2597 閱讀 1135

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

import scrapy

from ..items import jobspideritem

class zlspider(scrapy.spider):

name = 'zl'

allowed_domains = ['zhaopin.com']

start_urls = [

'','',

'',]

def parse(self, response):

yield scrapy.request(

url=response.url,

callback=self.parse_job_info,

meta={},

dont_filter=true

)def parse_job_info(self, response):

"""解析工作資訊

:param response:

:return:

"""zl_table_list = response.xpath("//div[@id='newlist_list_content_table']/table[@class='newlist']")

for zl_table in zl_table_list[1:]:

#當遇到table標籤時,要注意tbody加不加

#此處是網頁自動生成的,所以不加

#想要檢視是不是自動生成的,可以執行起來看效果,或者右鍵檢視原始碼

# zl_td_list = zl_table.xpath("tr[1]/td")

# #注意:此種方法只有確定列表中有資料時,才可以使用

# td1 = zl_td_list[0]

# td2 = zl_td_list[1]

# td3 = zl_td_list[2]

# td4 = zl_td_list[3]

# td5 = zl_td_list[4]

#查詢元素盡量使用xpath定位,少用索引,因為可能出現索引越界錯誤

#異常捕獲是在自己不能確定**有什麼錯誤的時候採利用

#//text() 獲取標籤內的所有文字資料

#extract()把列表中的元素轉換成文字,但其本身還是列表

#extract_first("預設值")

# 把列表中的元素轉換成文字,並去除第乙個,如果取不到,返回預設值

#此時td1是乙個列表,裡面分別含有a和b標籤中的文字

td1 = zl_table.xpath("tr/td[@class='zwmc']/div/a//text()").extract()

td1 = map(str.strip,td1)

job_name = "".join(td1).replace(",", "/")

fan_kui_lv = zl_table.xpath("tr/td[@class='fk_lv']/span/text()").extract_first("沒有反饋率").strip()

job_company_name = zl_table.xpath("tr/td[@class='gsmc']/a[1]/text()").extract_first("沒有公司名稱").strip()

job_salary = zl_table.xpath("tr/td[@class='zwyx']/text()").extract_first("面議").strip()

job_place = zl_table.xpath("tr/td[@class='gzdd']/text()").extract_first("沒有位址").strip()

print(job_name, fan_kui_lv, job_company_name, job_salary,job_place)

item=jobspideritem()

item['job_name'] = job_name

item['fan_kui_lv'] = fan_kui_lv

item['job_company_name'] = job_company_name

item['job_salary'] = job_salary

item['job_place'] = job_place

item['job_type'] = "智聯招聘"

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

yield item

yield scrapy.request(

url=response.url,

callback=self.parse_next_page,

meta={},

dont_filter=true

)def parse_next_page(self, response):

""":param response:

:return:

"""#通過判斷a標籤

if next_page:

yield scrapy.request(

url=next_page,

callback=self.parse_job_info,

meta={},

dont_filter=true

)

python爬取智聯招聘資訊

importrandom importre fromtimeimportsleep importrequests fromtqdmimporttqdm importuser agents importcsv defget page city,keyword,page 構造請求位址 paras 完整網...

python爬取智聯招聘資訊

分享今天寫的乙個爬取智聯招聘資訊的爬蟲,使用了requests和re模組,沒有寫注釋,但是 都比較簡單,不是太難,這是爬取的資訊 coding utf 8 import requests import re from itertools import izip from json import du...

Python爬取智聯招聘職位資訊

from urllib import request from urllib import parse from bs4 import beautifulsoup import csv 管理json資料的模組的 import json 定義智聯的爬蟲類 class zhilianspider obj...