政策资讯

Policy Information


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

来源: 重庆市软件正版化服务中心    |    时间: 2022-09-20    |    浏览量: 52981    |   

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

 

 

 

目录

输出结果

设计思路

核心代码


 

 

 

 

输出结果

4月有31天?what?本人编程出错,感谢纠正!


设计思路

 

核心代码

  1. -*- coding: utf-8 -*-
  2. Py之Crawler:爬虫实现爬取国内知名招聘网站,上海地区与机器学习有关的招聘信息并保存在csv文件内
  3. import re
  4. import csv
  5. import requests
  6. from tqdm import tqdm
  7. from urllib.parse import urlencode
  8. from requests.exceptions import RequestException
  9. def get_one_page(city, keyword, page):
  10. paras = {
  11. 'jl': city,
  12. 'kw': keyword,
  13. 'isadv': 0,
  14. 'isfilter': 1,
  15. 'p': page
  16. }
  17. headers = {
  18. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
  19. 'Host': 'sou.zhaopin.com',
  20. 'Referer': 'https://www.zhaopin.com/',
  21. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  22. 'Accept-Encoding': 'gzip, deflate, br',
  23. 'Accept-Language': 'zh-CN,zh;q=0.9'
  24. }
  25. url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?' + urlencode(paras)
  26. try:
  27. response = requests.get(url, headers=headers)
  28. if response.status_code == 200:
  29. return response.text
  30. return None
  31. except RequestException as e:
  32. return None
  33. def parse_one_page(html):
  34. pattern = re.compile('<a style=.*? >(.*?)</a>.*?'
  35. '<td class="gsmc"><a href="(.*?)" >(.*?)</a>.*?'
  36. '<td class="zwyx">(.*?)</td>', re.S)
  37. items = re.findall(pattern, html)
  38. print(items)
  39. for item in items: for循环的返回一个生成器
  40. job_name = item[0]
  41. job_name = job_name.replace('<b>', '')
  42. job_name = job_name.replace('</b>', '')
  43. yield { yield是一个关键词,类似return, 不同之处在于,yield返回的是一个生成器
  44. 'job': job_name,
  45. 'website': item[1],
  46. 'company': item[2],
  47. 'salary': item[3]
  48. }
  49. print(item)
  50. def write_csv_file(path, headers, rows):
  51. with open(path, 'a', encoding='gb18030', newline='') as f:
  52. f_csv = csv.DictWriter(f, headers)
  53. f_csv.writeheader()
  54. f_csv.writerows(rows)
  55. if __name__ == '__main__':
  56. main('上海', '机器学习', 10)

评论

产品推荐

更多 >

QQ咨询 扫一扫加入群聊,了解更多平台咨询
微信咨询 扫一扫加入群聊,了解更多平台咨询
意见反馈
立即提交
QQ咨询
微信咨询
意见反馈