Python_爬虫项目
1、爬虫——智联招聘信息搜集 原文链接
1 #-*- coding: utf-8 -*-
2 import re
3 import csv
4 import requests
5 from tqdm import tqdm
6 from urllib.parse import urlencode
7 from requests.exceptions import RequestException
8
9 def get_one_page(city, keyword, region, page):
10 '''
11 获取网页html内容并返回
12 '''
13 paras = {
14 'jl': city, # 搜索城市
15 'kw': keyword, # 搜索关键词
16 'isadv': 0, # 是否打开更详细搜索选项
17 'isfilter': 1, # 是否对结果过滤
18 'p': page, # 页数
19 're': region # region的缩写,地区,2005代表海淀
20 }
21
22 headers = {
23 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
24 'Host': 'sou.zhaopin.com',
25 'Referer': 'https://www.zhaopin.com/',
26 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
27 'Accept-Encoding': 'gzip, deflate, br',
28 'Accept-Language': 'zh-CN,zh;q=0.9'
29 }
30
31 url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?' + urlencode(paras)
32 try:
33 # 获取网页内容,返回html数据
34 response = requests.get(url, headers=headers)
35 # 通过状态码判断是否获取成功
36 if response.status_code == 200:
37 return response.text
38 return None
39 except RequestException as e:
40 return None
41
42 def parse_one_page(html):
43 '''
44 解析HTML代码,提取有用信息并返回
45 '''
46 # 正则表达式进行解析
47 pattern = re.compile('<a style=.*? target="_blank">(.*?)</a>.*?' # 匹配职位信息
48 '<td class="gsmc"><a href="(.*?)" target="_blank">(.*?)</a>.*?' # 匹配公司网址和公司名称
49 '<td class="zwyx">(.*?)</td>', re.S) # 匹配月薪
50
51 # 匹配所有符合条件的内容
52 items = re.findall(pattern, html)
53
54 for item in items:
55 job_name = item[0]
56 job_name = job_name.replace('<b>', '')
57 job_name = job_name.replace('</b>', '')
58 yield {
59 'job': job_name,
60 'website': item[1],
61 'company': item[2],
62 'salary': item[3]
63 }
64
65 def write_csv_file(path, headers, rows):
66 '''
67 将表头和行写入csv文件
68 '''
69 # 加入encoding防止中文写入报错
70 # newline参数防止每写入一行都多一个空行
71 with open(path, 'a', encoding='gb18030', newline='') as f:
72 f_csv = csv.DictWriter(f, headers)
73 f_csv.writeheader()
74 f_csv.writerows(rows)
75
76 def write_csv_headers(path, headers):
77 '''
78 写入表头
79 '''
80 with open(path, 'a', encoding='gb18030', newline='') as f:
81 f_csv = csv.DictWriter(f, headers)
82 f_csv.writeheader()
83
84 def write_csv_rows(path, headers, rows):
85 '''
86 写入行
87 '''
88 with open(path, 'a', encoding='gb18030', newline='') as f:
89 f_csv = csv.DictWriter(f, headers)
90 f_csv.writerows(rows)
91
92 def main(city, keyword, region, pages):
93 '''
94 主函数
95 '''
96 filename = 'zl_' + city + '_' + keyword + '.csv'
97 headers = ['job', 'website', 'company', 'salary']
98 write_csv_headers(filename, headers)
99 for i in tqdm(range(pages)):
100 '''
101 获取该页中所有职位信息,写入csv文件
102 '''
103 jobs = []
104 html = get_one_page(city, keyword, region, i)
105 items = parse_one_page(html)
106 for item in items:
107 jobs.append(item)
108 write_csv_rows(filename, headers, jobs)
109
110 if __name__ == '__main__':
111 main('北京', 'python',2005 , 10)
智联招聘Python岗位信息搜集
Python_爬虫项目的更多相关文章
- 基于webmagic的爬虫项目经验小结
大概在1个月前,利用webmagic做了一个爬虫项目,下面是该项目的一些个人心得,贴在这里备份: 一.为什么选择webmagic? 说实话,开源的爬虫框架已经很多了,有各种语言(比如:python.j ...
- 实用的开源百度云分享爬虫项目yunshare - 安装篇
今天开源了一个百度云网盘爬虫项目,地址是https://github.com/callmelanmao/yunshare. 百度云分享爬虫项目 github上有好几个这样的开源项目,但是都只提供了爬虫 ...
- 推荐几个优秀的java爬虫项目
java爬虫项目 大型的: Nutch apache/nutch · GitHub 适合做搜索引擎,分布式爬虫是其中一个功能. Heritrix internetarchive/heritrix3 ...
- Python即时网络爬虫项目启动说明
作为酷爱编程的老程序员,实在按耐不下这个冲动,Python真的是太火了,不断撩拨我的心. 我是对Python存有戒备之心的,想当年我基于Drupal做的系统,使用php语言,当语言升级了,推翻了老版本 ...
- Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)
1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...
- Python即时网络爬虫项目: 内容提取器的定义
1. 项目背景 在python 即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间,从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作 ...
- 在Pycharm中运行Scrapy爬虫项目的基本操作
目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...
- C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现
我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...
- C语言Linix服务器网络爬虫项目(一)项目初衷和网络爬虫概述
一.项目初衷和爬虫概述 1.项目初衷 本人的大学毕设就是linux上用c写的一个爬虫,现在我想把它完善起来,让他像一个企业级别的项目.为了重复发明轮子来学习轮子的原理,我们不使用第三方框架(这里是说的 ...
随机推荐
- 【贪心算法】HDU 5747 Aaronson
题目大意 vjudge链接 给你一个n,m,求解满足等式x0+2x1+4x2+...+2mxm=n的x0~xm的最小和(xi为非负整数) 数据范围 0≤n,m≤109 思路 n和m都在int范围内,所 ...
- rabbitmq 延时队列
前言 某个产品 或者订单,有个有效期 过了有效期要取消 方法一 : 写个脚本,用crontab 定时扫描 改变状态 但是最低只能一分钟 ,不适合 方法二 : 用swoole得毫秒定时器,每秒钟去扫描表 ...
- Flink on Yarn三部曲之一:准备工作
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- ps命令没有显示路径找到命令真实路径
top发现某程序占用大量资源,但ps查看看不到程序真实路径,查找真实路径. ps aux |grep COMMAND 找到PID ls /proc/ 里边有很多数字文件夹,找到PID相应的文件夹进去看 ...
- TNS-12541 TNS no listener
转载:https://blog.csdn.net/haha_201510/article/details/88119587 centOS环境下的解决方案: 查看监听状态lsnrctl status 如 ...
- ceil中有-0啊
这里主要是有一点: 1 Math.ceil(d1) ceil 方法上有这么一段注释:If the argument value is less than zero but greater ...
- elasticsearch启动报错
1,max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] 查看 ...
- 刷题不应该刷leecode 应该刷oj
因为leecode有很多题目 表述不清 意义不明 最关键的是 leecode压根不规定输入输出的格式 这个完全不是竞赛的风格 这样会养成很多坏习惯
- pwn之栈缓冲区溢出漏洞(入门)
题目ret2text 题目信息确认 使用file命令查看文件类型 root@CTF:/home/# file ret2text ret2text: ELF 32-bit LSB executable, ...
- 通过两行代码即可调整苹果电脑 Launchpad 图标大小
之前用 13 寸 Mac 的时候我还没觉得,后来换了 16 寸就发现有点不对劲了.因为 Mac 的高分辨率,当你进入 Launchpad 界面,应用图标的大小可能会让你怀疑:这特么是苹果的设计吗?有点 ...