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代码的打包与发布详解
Jul 30 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
python reduce 函数使用详解
Dec 05 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
Python subprocess模块功能与常见用法实例详解
Jun 28 Python
python爬虫实现中英翻译词典
Jun 25 Python
Python计算公交发车时间的完整代码
Feb 12 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 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
Cannot modify header information错误解决方法
2008/10/08 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
Python中asyncore的用法实例
2014/09/29 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Python正则表达式学习小例子
2020/03/03 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
Python 操作 MySQL数据库
2020/09/18 Python
初任培训自我鉴定
2013/10/07 职场文书
教师校本培训方案
2014/02/26 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
学校德育工作总结2015
2015/05/11 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android