当前位置:   article > 正文

python爬虫爬取音乐单曲_使用Python爬虫爬取招聘网站

1)使用chrome浏览器打开智联招聘首页,搜索“数据分析”,可以看到当前的网页是

1 Python爬虫简介

网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。简单的说,就是有一个程序可以自动去访问网页。

如何实现爬虫:可以分为三步:①构建请求头;②发起访问;③获得响应。参考文章:https://zhuanlan.zhihu.com/p/90986123

2 招聘网站Python爬虫

2.1 爬取前的分析

0707e41c813e99d8f3aef0e6df0ad187.png
  • (1)使用Chrome浏览器打开智联招聘首页,搜索“数据分析”,可以看到当前的网页是:https://sou.zhaopin.com/?jl=763&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90&kt=3
  • (2)按一下F12键,调出“控制台开发工具”,切换到“Network”选项卡,刷新网页,可以看到请求和响应。
  • (3)查找搜索结果在哪一个请求地址中,发现是在https://fe-api.zhaopin.com/c/i/sou中,是一个异步请求。
  • (4)构造请求头:查看“Request Headers”,记录下需要的参数。
  • (5)解析数据:结果是一个json。职位信息在data.results中。
  • (6)保存数据:使用csv把数据保存为csv格式的文件。当然也可以保存为其他格式化,或者保存到数据库。

2.2 爬虫代码和注释

严正声明:爬虫仅仅是一门技术,本次爬取的信息不包含任何个人信息,未对访问网站造成较大批量请求。仅供学习使用,不得用于不合规的用途。
  1. # 导入相关的包
  2. import requests
  3. import time
  4. import csv
  5. from urllib.parse import urlencode
  6. from urllib.parse import quote
  7. # 使用面向对象的方式
  8. class Spider:
  9. def __init__(self, page, cityId, search_keywords):
  10. '''初始化方法'''
  11. start = (page - 1) * 90 # 搜索结果每页90个,请求参数的start的值为0,90,180等。
  12. self.headers = {
  13. 'referer': 'https://sou.zhaopin.com/?jl=' + str(cityId) + '&kw=' + quote(search_keywords) + '&kt=3',
  14. 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)',
  15. 'x-requested-with': 'XMLHttpRequest' # ajax异步请求
  16. }
  17. self.params = {
  18. 'start': start,
  19. 'pageSize': '90',
  20. 'cityId': cityId,
  21. 'workExperience': -1,
  22. 'education': -1,
  23. 'companyType': -1,
  24. 'employmentType': -1,
  25. 'jobWelfareTag': -1,
  26. 'kw': search_keywords,
  27. 'kt': 3,
  28. '_v': '0.00882343',
  29. 'x-zp-page-request-id': '',
  30. 'x-zp-client-id': ''
  31. }
  32. self.url_search = 'https://fe-api.zhaopin.com/c/i/sou?' + urlencode(self.params)
  33. def get_one_page(self):
  34. '''请求网页'''
  35. try:
  36. response = requests.get(self.url_search, headers=self.headers)
  37. if response.status_code == 200:
  38. return response.json()
  39. except requests.ConnectionError:
  40. print('连接错误')
  41. return None
  42. def parse_one_page(self, response_json):
  43. '''解析网页'''
  44. if response_json:
  45. items = response_json.get('data').get('results')
  46. for item in items:
  47. crawlTime = str(time.ctime()) # 抓取时间
  48. businessArea = item.get('businessArea') # 公司所在区域
  49. city = item.get('city').get('items')[0].get('name') # 公司所在城市
  50. companyName = item.get('company').get('name') # 公司名称
  51. companyNumber = item.get('company').get('number') # 公司ID
  52. companySize = item.get('company').get('size').get('name') # 公司人数规模
  53. eduLevel = item.get('eduLevel').get('name') # 职位要求的学历
  54. jobName = item.get('jobName') # 职位名称
  55. jobNumber = item.get('number') # 职位ID
  56. jobType = item.get('jobType').get('items')[0].get('name') # 职位类别
  57. positionURL = item.get('positionURL') # 职位网址
  58. salary = item.get('salary') # 薪资
  59. updateDate = item.get('updateDate') # 职位更新时间
  60. workingExp = item.get('workingExp').get('name') # 工作年限要求
  61. zhilian_results = [crawlTime, businessArea, city, companyName, companyNumber, companySize, eduLevel,
  62. jobName, jobNumber, jobType, positionURL, salary, updateDate, workingExp]
  63. print('zhilian_results:', zhilian_results)
  64. yield zhilian_results
  65. def save_to_csv(self, zhilian_results):
  66. '''保存数据到CSV文件'''
  67. headers = ['crawlTime', 'businessArea', 'city', 'companyName', 'companyNumber',
  68. 'companySize', 'eduLevel', 'jobName', 'jobNumber', 'jobType', 'positionURL',
  69. 'salary' , 'updateDate', 'workingExp']
  70. with open('zhilian_results.csv', 'a', encoding='utf-8', newline='') as f:
  71. f_csv = csv.writer(f)
  72. f_csv.writerow(headers)
  73. f_csv.writerows(zhilian_results)
  74. def run(self):
  75. '''启动函数'''
  76. response_json = self.get_one_page()
  77. zhilian_search_results = self.parse_one_page(response_json)
  78. self.save_to_csv(zhilian_search_results)
  79. if __name__ == '__main__':
  80. # 抓取搜索相关性较高的前3
  81. for i in range(1, 4):
  82. time.sleep(1)
  83. s = Spider(i, 763, '数据分析')
  84. s.run()

爬取结果

2faba1fbff28f108f8cc9e1c9bf88b85.png
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1002655
推荐阅读
相关标签
  

闽ICP备14008679号