python2使用bs4爬取腾讯社招过程解析


Posted in Python onAugust 14, 2019

目的:获取腾讯社招这个页面的职位名称及超链接 职位类别 人数 地点和发布时间

要求:使用bs4进行解析,并把结果以json文件形式存储

注意:如果直接把python列表没有序列化为json数组,写入到json文件,会产生中文写不进去到文件,所以要序列化并进行utf-8编码后写入文件。

# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup as bs
import json
url = 'https://hr.tencent.com/position.php?'
params = {
  'start':'10'
}
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
# 获取腾讯社招某个页面的页面源码
html = requests.get(url, params = params, headers = headers).text
# 创建soup对象,使用lxml解析器
soup = bs(html,'lxml')
# 选取类名为odd和even的tr标签
result1 = soup.select('tr[class="odd"]')
result2 = soup.select('tr[class="even"]')
# 列表拼接 l = [1,2] + [3,4],则列表l为[1,2,3,4]
result = result1 + result2
# 把数据存放在列表里面,列表的每个元素都为一个字典
l = []
data = {}
for item in result:
  # 获取标签的文本内容
  job = item.find_all('a')[0].get_text().encode('utf-8')
  category = item.find_all('td')[1].get_text().encode('utf-8')
  number = item.find_all('td')[2].get_text().encode('utf-8')
  address = item.find_all('td')[3].get_text().encode('utf-8')
  public_time = item.find_all('td')[4].get_text().encode('utf-8')
  # 获取标签的属性值
  link = item.find_all('a')[0].attrs['href']
  fulllink = ('https://hr.tencent.com/' + link).encode('utf-8')
  data['job'] = job
  data['category'] = category
  data['number'] = number
  data['address'] = address
  data['public_time'] = public_time
  data['fulllink'] = fulllink
  l.append(data)
  # 原来中文写不到文件里面的报错原因,没把python列表序列化为json数组
  # with open('tencent.json','a') as f:
  #  f.write(str(data) + '\n')
# 方法1存储数据,上面字典的值不用先进行utf-8编码
# 把数据以json文件形式存储
# f = open('tencent.json','a')
# 把python列表序转化为json对象。本地操作常用的是load dump。网络操作常用的loads dumps,而loads常用来把json格式转化为python格式,dumps把python格式序列为json格式
# dictdata = json.dumps(l,ensure_ascii=False)
# 把json对象写入json文件
# f.write(dictdata.encode('utf-8'))
# f.close()

# 把数据存入tencent.json文件内
json.dump(l,open('tencent.json','a'),ensure_ascii=False)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python调用java的Webservice示例
Mar 10 Python
python轻松实现代码编码格式转换
Mar 26 Python
Python随机生成带特殊字符的密码
Mar 02 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
对python中的argv和argc使用详解
Dec 15 Python
python爬取酷狗音乐排行榜
Feb 20 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
django日志默认打印request请求信息的方法示例
May 17 Python
python读取xml文件方法解析
Aug 04 Python
Python基础之字符串格式化详解
Apr 21 Python
详解Python requests模块
Jun 21 Python
Python中可变和不可变对象的深入讲解
Aug 02 Python
详解用python计算阶乘的几种方法
Aug 14 #Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 #Python
用Python抢火车票的简单小程序实现解析
Aug 14 #Python
Python定时任务随机时间执行的实现方法
Aug 14 #Python
查看Python依赖包及其版本号信息的方法
Aug 13 #Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 #Python
Python编写带选项的命令行程序方法
Aug 13 #Python
You might like
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
微信自定义分享php代码分析
2016/11/24 PHP
js 如何实现对数据库的增删改查
2012/11/23 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
python实现自动获取IP并发送到邮箱
2018/12/26 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python 两种方法删除空文件夹
2020/09/29 Python
新学期家长寄语
2014/01/19 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
年终总结会议主持词
2014/03/17 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
刑事申诉状范文
2015/05/20 职场文书
爱的教育读书笔记
2015/06/26 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Go中的条件语句Switch示例详解
2021/08/23 Golang
vue项目支付功能代码详解
2022/02/18 Vue.js