# -*- 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...