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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

echarts mysql scrapy_抓取58job, 赶集job以及智联招聘,并使用数据分析生成echarts图...

發布時間:2025/1/21 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 echarts mysql scrapy_抓取58job, 赶集job以及智联招聘,并使用数据分析生成echarts图... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**抓取58job, 趕集job以及智聯招聘,并使用數據分析生成echarts圖**

爬蟲部分

爬蟲部分使用scrapy-redis分布式爬蟲,通過redis實現增量爬取以及去重,并將所有的數據直接保存到redis中,后續再做處理

github:https://github.com/AndrewAndrea/spider_work

代碼已經提交到GitHub中,不是很完善,爬蟲爬取的信息沒有詳情頁的數據,只有趕集網的數據是詳情頁的。有點懶得寫了。

可以自己把代碼clone下來,在做完善。

抓取智聯招聘的信息

這個很簡單

抓取58同城的招聘信息

這個也很簡單,我的代碼只做了一個城市的抓取,可以做擴展

抓取趕集網的招聘信息

這個也簡單。就不說了,也是一個城市的信息。

最后關于爬蟲如何同時啟動多個spider

如何將所有的爬蟲的同時啟動,這個我寫一下,記錄一下,避免以后給忘了。

首先,需要在爬蟲文件新建一個commond包,在該目錄下新建文件crawlall.py。

目錄結構:

crawlall.py中的內容:

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2019/5/6 16:31# @Author : zhao.jia# @Site :# @File : crawlall.py# @Software: PyCharmfromscrapy.commands importScrapyCommand

classCommand(ScrapyCommand):

requires_project = Truedefsyntax(self):

return'[options]'defshort_desc(self):

return'Runs all of the spiders'defrun(self,args,opts):

spider_list = self.crawler_process.spiders.list()

forname inspider_list:

self.crawler_process.crawl(name,**opts.__dict__)

self.crawler_process.start()

更改settings.py

COMMANDS_MODULE = 'spider_work.command'

啟動

scrapy crawlall

爬蟲部分到此結束,單個如何啟動大家也都知道。

可以擴張的地方很多,所以再補充幾點:

1、詳細的招聘信息的抓取

2、可以將代碼直接改成通用爬蟲

3、58job和趕集網的都是同城的,可以擴展到全國,寫個配置文件,拼接URL就行。可以分別根據每個網站做關鍵詞搜索爬蟲,而不是單一使用智聯的關鍵詞。

4、增加異常處理

5、增加數據去重存到 redis 中

數據轉換部分(可以忽略)

我是通過 MySQL 去做的,所以需要將 Redis 中的數據取出來存到 MySQL 中。

Redis 存儲的類型是列表,所以有重復數據。redis 取數據采用 lpop 方法。通過給 MySQL 表中的字段加索引,來去重,插入語句使用 replace into 而不是 insert into。?可以去百度一下,看看博客。

process_item_mysql.py

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2019/4/29 23:15# @Author : zhao.jia# @Site :# @File : process_item_mysql.py# @Software: PyCharmimportpymysql

importredis

importjson

defprocess_item(key):

Redis_conn = redis.StrictRedis(host='ip',port=6379,db=0,password='pass')

MySql_conn = pymysql.connect(host='ip',user='root',passwd='pass',port=3306,db='zhaopin')

cur = MySql_conn.cursor()

while True:

data = Redis_conn.lpop(key)

ifdata:

try:

data = json.loads(data.decode('unicode_escape'),strict=False)

exceptExceptionase:

process_item(key)

print(data)

try:

if'-'indata['city']:

city = data['city'].split('-')[0]

else:

city = data['city']

exceptExceptionase:

city = data['city']

lis = (

pymysql.escape_string(data['jobType']),pymysql.escape_string(data['jobName']),pymysql.escape_string(data['emplType']),pymysql.escape_string(data['eduLevel']),pymysql.escape_string(data['salary']),pymysql.escape_string(data['companyName']),pymysql.escape_string(city),pymysql.escape_string(data['welfare']),pymysql.escape_string(data['workingExp']))

sql = (

"replace into work(jobType, jobName, emplType, eduLevel, salary, companyName, city, welfare, workingExp) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"% lis)

try:

cur.execute(sql)

MySql_conn.commit()

exceptExceptionase:

MySql_conn.rollback()

else:

breakcur.close()

MySql_conn.close()

if__name__ == "__main__":

key_list = ['job_spider:items','jobs58:items','jobsganjispider']

fori inrange(3):

process_item(key_list[i])

可視化部分

可視化采用的flask+mysql+echarts

具體代碼見我的GitHub,這里就不貼了。

貼一下幾個圖吧

web網站的整體圖

搜索界面

學歷要求

學歷工資圖

經驗要求

詞云圖

完成

項目中可以擴展的部分很多,需要大家自己去寫,不用再搭架子寫簡單的東西,web部分也可以擴展,包括頁面以及echarts圖,數據分析都可以繼續擴展。

代碼中有任何問題都可以留言,指正。一塊學習!

代碼會放在我GitHub上,關注后回復 ‘work’,即可獲取

總結

以上是生活随笔為你收集整理的echarts mysql scrapy_抓取58job, 赶集job以及智联招聘,并使用数据分析生成echarts图...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。