日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

32、出任爬虫公司CEO(爬取职友网招聘信息)

發(fā)布時(shí)間:2023/12/19 综合教程 43 生活家
生活随笔 收集整理的這篇文章主要介紹了 32、出任爬虫公司CEO(爬取职友网招聘信息) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

職友集,搜索到全國上百家招聘網(wǎng)站的最新職位。

https://www.jobui.com/rank/company/

打開網(wǎng)址后,你會(huì)發(fā)現(xiàn):這是職友集網(wǎng)站的地區(qū)企業(yè)排行榜,里面含有
本月人氣企業(yè)榜前10家公司的招聘信息(公司名稱、職位、工作地點(diǎn)和招聘要求)
最佳口碑雇主前10家公司的招聘信息(公司名稱、職位、工作地點(diǎn)和招聘要求)
最多粉絲企業(yè)榜前10家公司的招聘信息(公司名稱、職位、工作地點(diǎn)和招聘要求)
最多評(píng)論企業(yè)榜前10家公司的招聘信息(公司名稱、職位、工作地點(diǎn)和招聘要求)

1、創(chuàng)建職友網(wǎng)項(xiàng)目zhiyou

 1 D:USERDATApython>scrapy startproject zhiyou
 2 New Scrapy project 'zhiyou', using template directory 'c:userswww1707appdatalocalprogramspythonpython37libsite-packagesscrapy	emplatesproject', created in:
 3     D:USERDATApythonzhiyou
 4 
 5 You can start your first spider with:
 6     cd zhiyou
 7     scrapy genspider example example.com
 8 
 9 D:USERDATApython>cd zhiyou
10 
11 D:USERDATApythonzhiyou>


2、創(chuàng)建爬蟲文件D:USERDATApythonzhiyouzhiyouspiderszhiyou.py

 1 import scrapy
 2 import bs4
 3 import re
 4 import requests
 5 import math
 6 from ..items import ZhiyouItem
 7 
 8 class ZhiyouItemSpider(scrapy.Spider):
 9     name = 'zhiyou'
10     allowed_domains   = ['www.jobui.com']
11     start_urls = ['https://www.jobui.com/rank/company/']
12 
13     def parse(self,response):
14         bs = bs4.BeautifulSoup(response.text,'html.parser')
15         datas = bs.find_all('a',href=re.compile('^/company/'))
16         for data in datas:
17             company_id = data['href']
18             company_url = 'https://www.jobui.com{}jobs/'.format(company_id)
19             yield scrapy.Request(company_url,callback=self.parse_company)
20 
21     def parse_company(self,response):
22         bs = bs4.BeautifulSoup(response.text,'html.parser')
23         try:
24             jobs = int(bs.find('p',class_='m-desc').text.split(' ')[1])
25             job_page = math.ceil(jobs / 15) + 1
26             company_url = str(response).split(' ')[1].replace('>','')
27 #            for i in range(1,job_page):
28             for i in range(1,2):
29                 job_url = '{}p{}'.format(company_url,i)
30                 yield scrapy.Request(job_url,callback=self.parse_job)
31         except:
32             pass
33 
34     def parse_job(self,response):
35         bs = bs4.BeautifulSoup(response.text,'html.parser')
36         datas = bs.find_all('div',class_='job-simple-content')
37         company_name = bs.find('h1',id='companyH1')['data-companyname']
38         for data in datas:
39             item = ZhiyouItem()
40             item['company'] = company_name
41             item['job']     = data.find('h3').text
42             item['city']    = data.find('span').text
43             item['desc']    = data.find_all('span')[1].text
44             yield item

3、編輯settings.py

 1 BOT_NAME = 'zhiyou'
 2 
 3 SPIDER_MODULES = ['zhiyou.spiders']
 4 NEWSPIDER_MODULE = 'zhiyou.spiders'
 5 
 6 USER_AGENT = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
 7 
 8 ROBOTSTXT_OBEY = False
 9 
10 FEED_URI = './s.csv'
11 FEED_FORMAT='CSV'
12 FEED_EXPORT_ENCODING='utf-8-sig'
13 
14 DOWNLOAD_DELAY = 0.5
15 
16 ITEM_PIPELINES = {
17     'zhiyou.pipelines.ZhiyouPipeline': 300,
18 }

4、編輯 items.py

1 import scrapy
2 
3 class ZhiyouItem(scrapy.Item):
4     company = scrapy.Field()
5     job = scrapy.Field()
6     city = scrapy.Field()
7     desc = scrapy.Field()

5、編輯pipelines.py

 1 import openpyxl
 2 
 3 class ZhiyouPipeline(object):
 4 #定義一個(gè)JobuiPipeline類,負(fù)責(zé)處理item
 5     def __init__(self):
 6     #初始化函數(shù) 當(dāng)類實(shí)例化時(shí)這個(gè)方法會(huì)自啟動(dòng)
 7         self.wb =openpyxl.Workbook()
 8         #創(chuàng)建工作薄
 9         self.ws = self.wb.active
10         #定位活動(dòng)表
11         self.ws.append(['公司', '職位', '地址', '招聘信息'])
12         #用append函數(shù)往表格添加表頭
13         
14     def process_item(self, item, spider):
15     #process_item是默認(rèn)的處理item的方法,就像parse是默認(rèn)處理response的方法
16         line = [item['company'], item['job'], item['city'], item['desc']]
17         #把公司名稱、職位名稱、工作地點(diǎn)和招聘要求都寫成列表的形式,賦值給line
18         self.ws.append(line)
19         #用append函數(shù)把公司名稱、職位名稱、工作地點(diǎn)和招聘要求的數(shù)據(jù)都添加進(jìn)表格
20         return item
21         #將item丟回給引擎,如果后面還有這個(gè)item需要經(jīng)過的itempipeline,引擎會(huì)自己調(diào)度
22 
23     def close_spider(self, spider):
24     #close_spider是當(dāng)爬蟲結(jié)束運(yùn)行時(shí),這個(gè)方法就會(huì)執(zhí)行
25         self.wb.save('./s.xlsx')
26         #保存文件
27         self.wb.close()
28         #關(guān)閉文件

6、在D:USERDATApythondangdang下執(zhí)行命令scrapy crawlzhiyou


Scrapy核心代碼,callback

 1 #導(dǎo)入模塊:
 2 import scrapy
 3 import bs4
 4 from ..items import JobuiItem
 5 
 6 
 7 class JobuiSpider(scrapy.Spider):
 8     name = 'jobs'
 9     allowed_domains = ['www.jobui.com']
10     start_urls = ['https://www.jobui.com/rank/company/']
11     
12 #提取公司id標(biāo)識(shí)和構(gòu)造公司招聘信息的網(wǎng)址:
13     def parse(self, response):
14     #parse是默認(rèn)處理response的方法
15         bs = bs4.BeautifulSoup(response.text, 'html.parser')
16         ul_list = bs.find_all('ul',class_="textList flsty cfix")
17         for ul in ul_list:
18             a_list = ul.find_all('a')
19             for a in a_list:
20                 company_id = a['href']
21                 url = 'https://www.jobui.com{id}jobs'
22                 real_url = url.format(id=company_id)
23                 yield scrapy.Request(real_url, callback=self.parse_job)
24 #用yield語句把構(gòu)造好的request對象傳遞給引擎。用scrapy.Request構(gòu)造request對象。callback參數(shù)設(shè)置調(diào)用parsejob方法。
25 
26 
27     def parse_job(self, response):
28     #定義新的處理response的方法parse_job(方法的名字可以自己起)
29         bs = bs4.BeautifulSoup(response.text, 'html.parser')
30         #用BeautifulSoup解析response(公司招聘信息的網(wǎng)頁源代碼)
31         company = bs.find(id="companyH1").text
32         #用fin方法提取出公司名稱
33         datas = bs.find_all('li',class_="company-job-list")
34         #用find_all提取<li class_="company-job-list">標(biāo)簽,里面含有招聘信息的數(shù)據(jù)
35         for data in datas:
36         #遍歷datas
37             item = JobuiItem()
38             #實(shí)例化JobuiItem這個(gè)類
39             item['company'] = company
40             #把公司名稱放回JobuiItem類的company屬性里
41             item['position']=data.find('h3').find('a').text
42             #提取出職位名稱,并把這個(gè)數(shù)據(jù)放回JobuiItem類的position屬性里
43             item['address'] = data.find('span',class_="col80").text
44             #提取出工作地點(diǎn),并把這個(gè)數(shù)據(jù)放回JobuiItem類的address屬性里
45             item['detail'] = data.find('span',class_="col150").text
46             #提取出招聘要求,并把這個(gè)數(shù)據(jù)放回JobuiItem類的detail屬性里
47             yield item
48             #用yield語句把item傳遞給引擎

總結(jié)

以上是生活随笔為你收集整理的32、出任爬虫公司CEO(爬取职友网招聘信息)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。