Crawler:基于urllib+requests库+伪装浏览器实现爬取国内知名招聘网站,上海地区与机器学习有关的招聘信息(2018.4.30之前)并保存在csv文件内

简介: Crawler:基于urllib+requests库+伪装浏览器实现爬取国内知名招聘网站,上海地区与机器学习有关的招聘信息(2018.4.30之前)并保存在csv文件内

输出结果

image.png

image.png

设计思路

image.png

核心代码

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

#Py之Crawler:爬虫实现爬取国内知名招聘网站,上海地区与机器学习有关的招聘信息并保存在csv文件内

import re

import csv

import requests

from tqdm import tqdm

from urllib.parse import urlencode

from requests.exceptions import RequestException

def get_one_page(city, keyword, page):  

  paras = {  

      'jl': city,        

      'kw': keyword,    

      'isadv': 0,        

      'isfilter': 1,    

      'p': page        

  }

  headers = {

      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',

      'Host': 'sou.zhaopin.com',

      'Referer': 'https://www.zhaopin.com/',

      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

      'Accept-Encoding': 'gzip, deflate, br',

      'Accept-Language': 'zh-CN,zh;q=0.9'

  }

  url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?' + urlencode(paras)

  try:

      response = requests.get(url, headers=headers)

      if response.status_code == 200:

          return response.text

      return None

  except RequestException as e:

      return None

def parse_one_page(html):

  pattern = re.compile('<a style=.*? target="_blank">(.*?)</a>.*?'      

      '<td class="gsmc"><a href="(.*?)" target="_blank">(.*?)</a>.*?'    

      '<td class="zwyx">(.*?)</td>', re.S)                                

  items = re.findall(pattern, html)  

  print(items)

 

  for item in items:  #for循环的返回一个生成器

      job_name = item[0]

      job_name = job_name.replace('<b>', '')

      job_name = job_name.replace('</b>', '')

      yield {   #yield是一个关键词,类似return, 不同之处在于,yield返回的是一个生成器

          'job': job_name,

          'website': item[1],

          'company': item[2],

          'salary': item[3]

      }

      print(item)

def write_csv_file(path, headers, rows):  

  with open(path, 'a', encoding='gb18030', newline='') as f:

      f_csv = csv.DictWriter(f, headers)

      f_csv.writeheader()

      f_csv.writerows(rows)

if __name__ == '__main__':

  main('上海', '机器学习', 10)  

 


相关文章
|
2月前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
18 2
|
2月前
|
数据采集 机器学习/深度学习 存储
【机器学习】数据清洗——基于Numpy库的方法删除重复点
【机器学习】数据清洗——基于Numpy库的方法删除重复点
80 1
|
2月前
|
数据采集 机器学习/深度学习 Python
【机器学习】数据清洗——基于Pandas库的方法删除重复点
【机器学习】数据清洗——基于Pandas库的方法删除重复点
55 1
|
2月前
|
机器学习/深度学习 自然语言处理 算法
机器学习-特征选择:如何用信息增益提升模型性能?
机器学习-特征选择:如何用信息增益提升模型性能?
58 1
|
8月前
|
存储 搜索推荐 数据挖掘
使用selenium库模拟浏览器行为,获取网页的cookie值
使用selenium库模拟浏览器行为,获取网页的cookie值
|
8天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。
|
9天前
|
机器学习/深度学习 算法 数据挖掘
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
|
4月前
|
机器学习/深度学习 算法 Python
机器学习 - [源码实现决策树小专题]决策树中,信息增益、信息增益率计算以及最佳特征挑选的Python实现
机器学习 - [源码实现决策树小专题]决策树中,信息增益、信息增益率计算以及最佳特征挑选的Python实现
48 0
|
4月前
|
机器学习/深度学习 JavaScript 前端开发
机器学习 - [源码实现决策树小专题]决策树中子数据集的划分(不允许调用sklearn等库的源代码实现)
机器学习 - [源码实现决策树小专题]决策树中子数据集的划分(不允许调用sklearn等库的源代码实现)
40 0
|
6月前
|
Shell 网络安全 文件存储
ModelScope中,请教PAI-DSW中实例退出后如何让文件继续保持?现在是退出后就清零了。再打开实例进去就没有了
ModelScope中,请教PAI-DSW中实例退出后如何让文件继续保持?现在是退出后就清零了。再打开实例进去就没有了
59 1

热门文章

最新文章