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)  

 


相关文章
|
机器学习/深度学习 自然语言处理 算法
机器学习-特征选择:如何用信息增益提升模型性能?
机器学习-特征选择:如何用信息增益提升模型性能?
890 1
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
1824 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
2856 1
|
Web App开发 API Windows
取接口访问者信息[IP,浏览器,操作系统]免费API接口教程
此API用于获取访问者的IP地址、浏览器和操作系统信息,支持70多种浏览器和操作系统。通过POST或GET请求至`https://cn.apihz.cn/api/ip/getapi.php`,需提供用户ID和KEY。返回结果包括状态码、消息、IP、浏览器和操作系统信息。示例:{&quot;code&quot;:200,&quot;ip&quot;:&quot;175.154.88.178&quot;,&quot;browser&quot;:&quot;Chrome&quot;,&quot;os&quot;:&quot;Windows 10&quot;}。详情见官网文档。
454 0
|
Web App开发
成功解决Chrome浏览器 控制台下看不到接口信息的问题
这篇文章提供了解决Chrome浏览器控制台不显示接口信息问题的方法,包括检查过滤设置和确保“保留日志”开关已打开。
成功解决Chrome浏览器 控制台下看不到接口信息的问题
|
JavaScript
vue 组件封装 | 随鼠标移动的信息框 (含监听鼠标移动、移出事件,获取元素的宽高、获取浏览器的宽高)
vue 组件封装 | 随鼠标移动的信息框 (含监听鼠标移动、移出事件,获取元素的宽高、获取浏览器的宽高)
151 1
|
存储 PHP Windows
Typecho——非插件方式实现评论显示系统信息和浏览器信息
Typecho——非插件方式实现评论显示系统信息和浏览器信息
191 0
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI 操作报错合集之在PAI-DSW(平台上的AI数据科学工作站)上尝试修改实例名时,收到"实例不存在"的错误信息如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)