用python抓取求职网站信息
本次抓取的是智联招聘网站搜索“数据分析师”之后的信息。
python版本: python3.5。
我用的主要package是 Beautifulsoup + Requests+csv
另外,我将招聘内容的简单描述也抓取下来了。
文件输出到csv文件后,发现用excel打开时有些乱码,但用文件软件打开(如notepad++)是没有问题的。
为了能用Excel打开时正确显示,我用pandas转换了以下,并添加上列名。转化完后,就可以正确显示了。关于用pandas转化,可以参考我的博客:
由于招聘内容的描述较多,最后将csv文件另存为excel文件,并调整下格式,以便于查看。
最后效果如下:
实现代码如下:信息爬取的代码如下:
- # Code based on Python 3.x
- # _*_ coding: utf-8 _*_
- # __Author: "LEMON"
- from bs4 import BeautifulSoup
- import requests
- import csv
- def download(url):
- headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}
- req = requests.get(url, headers=headers)
- return req.text
- def get_content(html):
- soup = BeautifulSoup(html, 'lxml')
- body = soup.body
- data_main = body.find('div', {'class': 'newlist_list_content'})
- tables = data_main.find_all('table')
- zw_list = []
- for i,table in enumerate(tables):
- if i == 0:
- continue
- temp = []
- tds = table.find('tr').find_all('td')
- zwmc = tds[0].find('a').get_text()
- zw_link = tds[0].find('a').get('href')
- fkl = tds[1].find('span').get_text()
- gsmc = tds[2].find('a').get_text()
- zwyx = tds[3].get_text()
- gzdd = tds[4].get_text()
- gbsj = tds[5].find('span').get_text()
- tr_brief = table.find('tr', {'class': 'newlist_tr_detail'})
- brief = tr_brief.find('li', {'class': 'newlist_deatil_last'}).get_text()
- temp.append(zwmc)
- temp.append(fkl)
- temp.append(gsmc)
- temp.append(zwyx)
- temp.append(gzdd)
- temp.append(gbsj)
- temp.append(brief)
- temp.append(zw_link)
- zw_list.append(temp)
- return zw_list
- def write_data(data, name):
- filename = name
- with open(filename, 'a', newline='', encoding='utf-8') as f:
- f_csv = csv.writer(f)
- f_csv.writerows(data)
- if __name__ == '__main__':
- basic_url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%85%A8%E5%9B%BD&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&sm=0&p='
- number_list = list(range(90)) # total number of page is 90
- for number in number_list:
- num = number + 1
- url = basic_url + str(num)
- filename = 'zhilian_DA.csv'
- html = download(url)
- # print(html)
- data = get_content(html)
- # print(data)
- print('start saving page:', num)
- write_data(data, filename)
用pandas转化的代码如下:
- # Code based on Python 3.x
- # _*_ coding: utf-8 _*_
- # __Author: "LEMON"
- import pandas as pd
- df = pd.read_csv('zhilian_DA.csv', header=None)
- df.columns = ['职位名称', '反馈率', '公司名称', '月薪', '工作地点',
- '发布日期', '招聘简介', '网页链接']
- # 将调整后的dataframe文件输出到新的csv文件
- df.to_csv('zhilian_DA_update.csv', index=False)
用python抓取求职网站信息的更多相关文章
- 使用python抓取美团商家信息
抓取美团商家信息 import requests from bs4 import BeautifulSoup import json url = 'http://bj.meituan.com/' ur ...
- Python抓取成都房价信息
Python里scrapy爬虫 scrapy爬虫,正好最近成都房价涨的厉害,于是想着去网上抓抓成都最近的房价情况,顺便了解一下,毕竟咱是成都人,得看看这成都的房子我以后买的起不~ 话不多说,进入正题: ...
- 无比强大!Python抓取cssmoban网站的模版并下载
Python实现抓取http://www.cssmoban.com/cssthemes网站的模版并下载 实现代码 # -*- coding: utf-8 -*- import urlparse imp ...
- python爬取电影网站信息
一.爬取前提1)本地安装了mysql数据库 5.6版本2)安装了Python 2.7 二.爬取内容 电影名称.电影简介.电影图片.电影下载链接 三.爬取逻辑1)进入电影网列表页, 针对列表的html内 ...
- python抓取贝壳房源信息
分析了贝壳的房源信息数据,发现地址链接的参数传递是有规律的 https://tj.ke.com/chengjiao/a3l4/ a3 实际表示的 l4 表示的是 然后 将复合条件拼成一个字符串,带过去 ...
- 抓取某网站信息时遇到的问题及解决 The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set
var response = httpClient.SendAsync(requestMessage).Result; content = response.Content.ReadAsStringA ...
- Python爬虫实战---抓取图书馆借阅信息
Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...
- Python 抓取网页并提取信息(程序详解)
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
- 用python抓取智联招聘信息并存入excel
用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...
随机推荐
- PariticalFilter在MFC上的运行,源代码公开
由于项目需要,进行过一段时间的 PariticalFilter 研究.主要的工作就是将网络上的Console代码和Mfc融合在一起,并且添加了Mfc端的控制功能. 程序还有不完善的地方,现 ...
- DTLS 技术要点解析
一.DTLS DTLS 是指 Datagram Transport Level Security,即数据报安全传输协议: 其提供了UDP 传输场景下的安全解决方案,能防止消息被窃听.篡改.身份冒充等问 ...
- Wireshark网络抓包(三)——网络协议
一.ARP协议 ARP(Address Resolution Protocol)地址解析协议,将IP地址解析成MAC地址. IP地址在OSI模型第三层,MAC地址在OSI第二层,彼此不直接通信: 在通 ...
- 内功心法 -- java.util.ArrayList<E> (5)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- Exiting the Matrix: Introducing Metasploit's Hardware Bridge
Metasploit is an amazing tool. You can use it to maneuver through vast networks, pivoting through se ...
- UI进阶 即时通讯之XMPP登录、注册
1.XMPP环境搭建 http://www.cnblogs.com/fearlessyyp/p/5506644.html 第一次打开可能会有点儿慢,图片很多,步骤很详细,祝搭建成功. 2.工程中添加X ...
- java学习阶段三:运算符和结构学习
import java.util.Scanner;/* * JAVA中运算符的学习: * 算术运算符:+.-.*./ 和 %,两个整数相除,结果还是整数. * 赋值运算符:=.+=.-=.*=./=. ...
- Windows环境下安装配置Teamcity配合git自动发布mvc,webapi站点
以下是本人配置Teamcity具体环境和步骤,只实现了项目发布,打包.Nodejs npm gulp没有配置成功,后期补上. 1 环境安装 本人使用的是windows7 sp1 64位系统,(.net ...
- 如何让 Git 忽略掉文件中的特定行内容?
近期在git遇到几个问题,让我重新认识到git的强大性,下面列出来记录一下 有一个数据库的配置文件,在用 git add 添加到 index file 时不能透露了相关配置.而如果用 .gitigno ...
- c++编程思想(一)--对象导言
回过头来看c++编程思想第一章,虽然只是对c++知识的一个总结,并没有实质性知识点,但是收获还是蛮多的! 下面感觉是让自己茅塞顿开的说法,虽然含义并不是很准确,但是很形象(自己的语言): 1.类描述了 ...