爬虫-Scrapy(七)抓取招聘信息技能关键词,生成词云图

这个昨晚10点做到今天凌晨2点多,主要是安装wordcount 各种Duang Duang 的报错,建议需要安装的同学自己去下载对应的版本,不要太依赖pip的自动安装。

开搞

1.抓取招聘信息列表

找一个招聘网站,最好不用登录就可以浏览职位的那种,然后输入关键次,先查看下结果。

私心想着如果结果太多,就在加上些企业规模、薪资待遇等条件搜小下爬取范围,因为只为学习研究,数据量大的话太影响效率。

结果发现 关键词:爬虫 + 地区:北京 只有3页110个结果,悲哀,那就全来吧。

a.翻页,实现遍历3页

翻页,访问3页的工作列表

def start_requests(self):
# url 是有规律的,中间的 1.html ,2.html 分别代表第1页和第2页
for i in range(1,4):
url = ‘https://某招聘网站/list/2,{}.html?lang=c&postchannel=0000&workyear=99’.format(i)yield scrapy.Request(url, callback=self.parse)

b.每页按招聘列表遍历每个招聘的详情页

## 遍历每页的工作列表
def parse(self, response):
    job_list = json.loads(response.text)['engine_search_result']
    for job in job_list:
        yield scrapy.Request(job['job_href'], callback=self.parse_job)

c.招聘详情页抓取岗位职责和技能要求,解析后返回给item

# 获取工作职责和技能要求中的英文词
def parse_job(self, response):
    job_msg_list = response.xpath('//div[@class="bmsg job_msg inbox"]/p/text()').extract()
    for job_msg in job_msg_list:
        words = re.sub("[^A-Za-z]", " ", job_msg.strip()).split()
        for word in words:
            item = SkillcountItem()
            item['job_word'] = word
            yield item

这里用了个正则表达式过滤了下只要应为单词,因为技能要求大部分都是英文的,比如python ,mysql, selenium 什么的。

也尝试过用jieba分词把中文也分成单词来统计,结果发现大部分都没实际意义。

2.item中关键词转为字符,生成词云图

class SkillWordPipeline:
  
def init(self):
self.job_items = []

def process_item(self, item, spider):
    self.job_items.append(copy.deepcopy(item['job_word']))
    return item

def close_spider(self, spider):
    job_details = ' '.join(self.job_items)
    self.generate_image(job_details)

def generate_image(self,job_details):
    print(job_details)
    wc = wordcloud.WordCloud(
        background_color='white',  # 背景色
        width=1200,
        height=800
        # max_words=30,  # 最大显示单词数
        # max_font_size=60  # 频率最大单词字体大小
    )
    # 生成词云图
    wc.generate(job_details)
    # 转图片
    image = wc.to_image()
    image.show()  # 显示词云
    #保存到本地
    wc.to_file("D:\skill_word.jpg")

代码简洁,可用。 wordcloud 的WordCloud 还有其他的参数,详细可以查,如果要设置字体需指定 字体ttf文件资源路径。

3.结果展示

没图?没图你说杰巴,呵呵,有图的。
爬虫-Scrapy(七)抓取招聘信息技能关键词,生成词云图_第1张图片

现在知道改学什么了吧

你可能感兴趣的:(爬虫-Scrapy)