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函数参数类型*、**的区别
Apr 11 Python
python通过imaplib模块读取gmail里邮件的方法
May 08 Python
详解Django框架中用户的登录和退出的实现
Jul 23 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
详解Python中的Descriptor描述符类
Jun 14 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 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
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
详解php中反射的应用
2016/03/15 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
几种tab切换详解
2017/02/03 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Python作用域用法实例详解
2016/03/15 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
Python字节单位转换实例
2019/12/05 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Python中的With语句的使用及原理
2020/07/29 Python
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
医学专业个人求职自荐信格式
2013/09/23 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
2014年行政工作总结
2014/11/19 职场文书
地震慰问信
2015/02/14 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS