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绘制铅球的运行轨迹代码分享
Nov 14 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
python 用struct模块解决黏包问题
Nov 07 Python
Python hashlib和hmac模块使用方法解析
Dec 08 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
PHP has encountered an Access Violation
2007/01/15 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
python实现保存网页到本地示例
2014/03/16 Python
python迭代器实例简析
2014/09/25 Python
神经网络python源码分享
2017/12/15 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Sanic框架Cookies操作示例
2018/07/17 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
python输出带颜色字体实例方法
2019/09/01 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
Python中的全局变量如何理解
2020/06/04 Python
Python如何读写CSV文件
2020/08/13 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
南京某软件公司的.net面试题
2015/11/30 面试题
信访工作汇报材料
2014/10/27 职场文书
工作经验交流材料
2014/12/30 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书